TransIP API包装器
项目描述
Python TransIP
python-transip 是一个用于 TransIP REST API V6 的 Python 包装器。
简介
欢迎使用Python TransIP文档。
REST API V6
python-transip实现了新的TransIP REST API,以RESTful方式管理所有产品,这意味着对于大多数产品,您可以轻松地进行创建、更新和删除调用。
该包装器尽量接近官方API文档的命名约定。
SOAP V5 API(已弃用)
强烈建议用户使用新的REST API,因为SOAP API已被弃用。如果您仍然依赖于尚未在python-transip中实现的功能,请考虑提出一个功能请求,并在同时使用transip-api (已弃用)。
安装
python-transip可在PyPI上获得
$ python -m pip install python-transip
python-transip官方支持Python 3.6及以上版本。
文档
完整的API参考和用户指南可在Read the Docs上找到。
身份验证
为了通过python-transip管理TransIP产品,您需要经过身份验证。REST API V6需要使用符合JSON Web Token标准的访问令牌。
要获取访问令牌,您应首先使用控制面板生成密钥对。然后,您可以将私钥传递给python-transip客户端,允许客户端生成新的访问令牌,例如:
import transip
# You can initialize a TransIP client using a private key directly.
PRIVATE_KEY = '''-----BEGIN PRIVATE KEY-----
...
'''
client = transip.TransIP(login='demouser', private_key=PRIVATE_KEY)
# You can also initialize a TransIP client by telling it where to find the
# private key file on the system.
client = transip.TransIP(login='demouser', private_key_file='/path/to/private.key')
或者,您也可以通过提供访问令牌进行身份验证。这在使用演示令牌测试API时特别有用,例如:
import transip
from transip.v6 import DEMO_TOKEN
# You can initialize a TransIP client using an access token directly.
client = transip.TransIP(access_token=DEMO_TOKEN)
通用
通用TransIP API资源允许您管理产品、可用区域并调用API测试资源。
产品
管理可用的TransIP产品和产品规范。
Product 类
当列出TransIP上可用的所有产品时,将返回一个包含transip.v6.objects.Product对象的列表。
类 Product
Product类提供了以下属性
- name:产品的名称。
- description:产品描述。
- price:以分计算的金额。
- recurringPrice:产品的周期性价格,以分计算。
- elements:列出产品元素的详细信息的服务。
ProductElement 类
当列出transip.v6.objects.Product对象的所有产品元素时,将返回一个包含transip.v6.objects.ProductElement对象的列表。
类 ProductElement
ProductElement类提供了以下属性
- name:产品元素的名称。
- description:产品元素描述。
- amount:数量。
列出所有产品
检索具有其名称、描述和价格的产品的列表。
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# List all available TransIP products.
products = client.products.list()
# Show product information on the screen.
for product in products:
print((
f"Product {product.name} ({product.description}) costs "
f"{product.price} (cents), after which it costs "
f"{product.recurringPrice} (cents)"
))
列出产品的规格
获取产品的规范。这将列出产品的所有不同元素及其包含的数量,例如,vps-bladevps-x4
有2个CPU核心元素。
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Show product specification information on the screen for all available
# TransIP products.
for product in client.products.list():
print(f"Product {product.name} ({product.description}):")
elements = product.elements.list()
for element in elements:
print(f"- Has {element.amount} {element.name}: {element.description}")
可用区
管理TransIP可用区域。
AvailabilityZone 类
当列出TransIP上可用的所有可用区域时,将返回一个包含transip.v6.objects.AvailabilityZone对象的列表。
类 AvailabilityZone
AvailabilityZone类提供了以下属性
- name:可用区域的名称。
- country:可用区域所在国家的两位字母代码。
- isDefault:如果为true,则此为默认区域,新VPS和克隆将创建在此区域。
列出可用区
检索可用的可用区域。
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# List all available availability zones.
zones = client.availability_zones.list()
# Show availability zone information on the screen.
for zone in zones:
print((
f"Availability zone {zone.name} in {zone.country} "
f"(default: {zone.isDefault})"
))
API测试
一个简单的测试资源,以确保一切正常。
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Check if everything is working by calling the API test resource.
if client.api_test.test():
print("Everthing is working!")
账户
TransIP账户API资源允许您管理发票和SSH密钥。
发票
管理绑定到您的TransIP账户的发票。
Invoice 类
当列出绑定到您的TransIP账户的所有发票时,将返回一个包含transip.v6.objects.Invoice对象的列表。
类 Invoice
Invoice类提供了以下属性:
- invoiceNumber:发票号码。
- creationDate:发票创建日期。
- payDate:发票支付日期。
- dueDate:发票截止日期。
- invoiceStatus:发票状态。
- currency:此发票使用的货币。
- totalAmount:发票总额(以分显示)。
- totalAmountInclVat:包含增值税的发票总额(以分显示)。
- items:列出单个发票项目的详细信息的服务。
InvoiceItem 类
当列出绑定到transip.v6.objects.Invoice对象的所有发票项目时,将返回一个包含transip.v6.objects.InvoiceItem对象的列表。
类 InvoiceItem
InvoiceItem类提供了以下属性:
- product:产品名称。
- description:产品描述。
- isRecurring:支付是否为周期性。
- date:订单行项目应开具发票的日期。
- quantity:发票项目的数量。
- price:不含增值税的价格(以分显示)。
- priceInclVat:含增值税的价格(以分显示)。
- vat:收取的增值税金额。
- vatPercentage:计算增值税的百分比。
- discounts:包含应用的折扣的字典。
- description:应用的折扣描述。
- amount:折扣金额(以分计)。
该类有以下方法
- pdf(file_path)将发票存储为PDF文件,位置由file_path关键字参数提供。当file_path是目录时,PDF文件将使用发票号码作为其基本名称保存。
列出所有发票
通过调用transip.TransIP.invoices.list()检索绑定到您的TransIP账户的所有发票。这将返回一个包含transip.v6.objects.Invoice对象的列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# List all invoices attached to your TransIP account.
invoices = client.invoices.list()
# Show invoice information on the screen.
for invoice in invoices:
print(f"Invoice {invoice.invoiceNumber} was paid on {invoice.payDate}")
注意:当使用演示访问令牌时,API当前不列出任何发票。
列出单个发票
通过调用transip.TransIP.invoices.get(id)根据其发票号码检索绑定到您的TransIP账户的单个发票。这将返回一个transip.v6.objects.Invoice对象。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a single invoice by its invoice number.
invoice = client.invoices.get('F0000.1911.0000.0004')
# Show invoice information on the screen.
print(f"Invoice {invoice.invoiceNumber} was paid on {invoice.payDate}")
注意:当使用演示访问令牌时,API当前不列出任何发票。
按发票编号列出发票项目
通过在transip.v6.objects.Invoice对象上调用items.list()来检索绑定到您的TransIP账户的单个发票的发票项目。这将返回一个包含transip.v6.objects.InvoiceItem对象的列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a single invoice by its invoice number.
invoice = client.invoices.get('F0000.1911.0000.0004')
# Retrieve all items of a single invoice.
items = invoice.items.list()
# Show invoice information on the screen.
for item in items:
print(f"Product {item.product} ({item.description})")
注意:当使用演示访问令牌时,API当前不列出任何发票。
检索发票作为PDF文件
任何发票都可以通过在transip.v6.objects.Invoice对象上调用pdf(file_path)来保存为PDF文件。
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a single invoice by its invoice number.
invoice = client.invoices.get('F0000.1911.0000.0004')
# Save the invoice as a PDF file.
invoice.pdf('/path/to/invoices/')
注意:当使用演示访问令牌时,API当前不列出任何发票。
SSH密钥
SshKey 类
当列出绑定到您的TransIP账户的所有SSH密钥时,将返回一个包含transip.v6.objects.SshKey对象的列表。
类 SshKey
SshKey类提供了以下属性:
- id:SSH密钥标识符。
- key:SSH密钥。
- description:SSH密钥描述(最大255个字符)。
- creationDate:此SSH密钥被添加的日期(时区:欧洲/阿姆斯特丹)。
- fingerprint:SSH密钥的MD5指纹。
该类有以下方法
- delete()将删除您的TransIP账户中的SSH密钥。
- update()将发送更新的属性到TransIP API。
列出所有SSH密钥
通过调用 transip.TransIP.ssh_keys.list() 获取您TransIP账户所有附加的SSH密钥。这将返回一个包含 transip.v6.objects.SshKey 对象的列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# List all SSH keys attached to your TransIP account.
ssh_keys = client.ssh_keys.list()
# Show SSH key information on the screen.
for ssh_key in ssh_keys:
print(f"SSH key {ssh_key.id} has fingerprint {ssh_key.fingerprint}")
注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。
通过ID获取SSH密钥
通过调用 transip.TransIP.ssh_key.get(id) 通过其ID检索您TransIP账户中附加的单个SSH密钥。这将返回一个 transip.v6.objects.SshKey 对象。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a SSH key by its ID (provided by TransIP).
invoice = client.ssh_keys.get(123)
# Show SSH key information on the screen.
print(f"SSH key {ssh_key.id} has fingerprint {ssh_key.fingerprint}")
注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。
添加新的SSH密钥
通过调用 transip.TransIP.ssh_key.create(data) 将新的SSH密钥添加到您的TransIP账户。关键字参数 data 需要一个包含 sshKey 和 description 属性的字典。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Data used to create a new SSH key.
key_data = {
"sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key"
}
# Add the new SSH key to your TransIP account.
client.ssh_keys.create(key_data)
注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。
更新SSH密钥
通过调用 transip.TransIP.ssh_key.update(id, data) 更新您TransIP账户中的现有SSH密钥。关键字参数 id 是由TransIP提供的SSH密钥ID,而关键字参数 data 需要一个包含 sshKey 和 description 属性的字典。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Dictionary containing the new description of the SSH key
key_data = {
"description": "Jim key"
}
# Update SSH key (ID: 123) with the new description.
client.ssh_keys.update(123, key_data)
transip.v6.objects.SshKey 类还提供了一个 update() 方法,用于在更改任何可更新属性后从实例更新 SshKey 对象。
注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。
删除SSH密钥
通过调用 transip.TransIP.ssh_key.delete(id) 从您的TransIP账户中删除现有的SSH密钥。关键字参数 id 是由TransIP提供的SSH密钥ID。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Delete SSH key with ID 123.
client.ssh_keys.delete(123)
transip.v6.objects.SshKey 类还提供了一个 delete() 方法,用于从实例中删除 SshKey 对象。
注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。
域名
TransIP API 资源允许您管理域名、品牌、联系人、DNS、DNSSEC、名称服务器、操作、SSL、WHOIS、可用性和调用tlds资源。
管理 domains 和相关资源的文档尚未全部完成。请随时提交 问题 以添加文档中缺少的部分。
域名
管理域名。
Domain 类
当列出您的TransIP账户中的所有域名时,将返回一个包含 transip.v6.objects.Domain 对象的列表。
类 Domain
Domain 类提供了以下属性
- name:包括顶级域的域名。
- authCode:由注册机构生成的此域的authcode。
- isTransferLocked:如果此域支持转移锁定,当域在注册机构中锁定转移能力时,此标志为True。
- registrationDate:域的注册日期,格式为YYYY-mm-dd。
- renewalDate:域的下一次续订日期,格式为YYYY-mm-dd。
- isWhitelabel:如果此域已添加到您的白标中。
- cancellationDate:取消日期,格式为YYYY-mm-dd h:i:s,如果域处于活动状态,则为None。
- cancellationStatus:取消状态,如果域处于活动状态,则为None,如果域已取消,则为‘cancelled’。
- isDnsOnly:此域是否为DNS仅。
- tags:添加到此域的自定义标签。
- contacts:管理域联系人的服务。
- dns:管理域DNS记录的服务。
- nameservers:管理域名称服务器的服务。
列出所有域名
通过调用 transip.TransIP.domains.list() 获取您TransIP账户中注册的所有域名。这将返回一个包含 transip.v6.objects.Domain 对象的列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# List all domains.
domains = client.domains.list()
# Show domain information on the screen.
for domain in domains:
print(f"Domain {domain.name} was registered at {domain.registrationDate}")
检索现有域名
通过调用 transip.TransIP.domains.get(name) 通过其名称获取您TransIP账户中注册的单个域名。这将返回一个 transip.v6.objects.Domain 对象。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name
domain = client.domains.get('transipdemonstratie.nl')
# Show domain information on the screen.
print(f"Domain {domain.name} was registered at {domain.registrationDate}")
DNS
管理域的DNS记录。此处所做的任何更改都将推送到TransIP名称服务器。
DnsEntry 类
当列出 transip.v6.objects.Domain 对象的所有DNS记录时,将返回一个包含 transip.v6.objects.DnsEntry 对象的列表。
类 DnsEntry
DnsEntry 类提供了以下属性
- name:dns条目的名称,例如‘@’或‘www’
- 过期时间:DNS条目的过期期限,单位为秒。例如,86400表示一天的过期时间。
- 类型:DNS条目的类型。可能的类型有‘A’,‘AAAA’,‘CNAME’,‘MX’,‘NS’,‘TXT’,‘SRV’,‘SSHFP’和‘TLSA’。
- 内容:DNS条目的内容,例如‘10 mail’,‘127.0.0.1’或‘www’。
该类有以下方法
- delete()将从域中删除DNS记录。
- update()将发送更新后的属性到TransIP API。这只能在更新DnsEntry的内容属性且没有其他具有相同名称、过期时间和类型属性的DNS记录时使用。
列出域名的所有DNS条目
通过在transip.v6.objects.Domain对象上调用dns.list()来检索您在TransIP账户中注册的单个域的DNS记录。这将返回一个transip.v6.objects.DnsEntry对象的列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the DNS records of a single domain.
records = domain.dns.list()
# Show the DNS record information on the screen.
for record in records:
print(f"DNS: {record.name} {record.expire} {record.type} {record.content}")
向域名添加新的单个DNS条目
通过在transip.v6.objects.Domain对象上调用dns.create(data)来向域添加新的DNS记录。关键字参数data是一个包含名称、过期时间、类型和内容属性的字典。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Dictionary containing the information for a single DNS record.
dns_entry_data = {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
# Add the DNS record to the domain.
domain.dns.create(dns_entry_data)
更新单个DNS条目
通过在transip.v6.objects.Domain对象上调用dns.update(data)来更新域的单个DNS记录。关键字参数data是一个包含名称、过期时间、类型和内容属性的字典。
这只能在更新DNS条目的内容属性且没有其他具有相同名称、过期时间和类型属性的DNS记录时使用。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Dictionary containing the information for a single updated DNS record.
dns_entry_data = {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.2" # The update content.
}
# Update the content of a single DNS record.
domain.dns.update(dns_entry_data)
更新域名的所有DNS条目
通过在transip.v6.objects.Domain对象上调用dns.replace()来一次性更新您在TransIP账户中注册的单个域的所有DNS记录。
注意:这将删除所有现有的DNS记录。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the DNS records of a single domain.
records = domain.dns.list()
for record in records:
# Update the A-record for localhost
if record.name == 'localhost' and record.type == 'A':
record.content = '127.0.0.1'
# Replace all the records with the updated ones
domain.dns.replace(records)
从域名中删除DNS条目
通过在transip.v6.objects.Domain对象上调用dns.delete(data)来从域中删除现有的DNS记录。关键字参数data是一个包含名称、过期时间、类型和内容属性的字典。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Dictionary containing the information for a single DNS record.
dns_entry_data = {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
# Delete the DNS record from the domain.
domain.dns.delete(dns_entry_data)
transip.v6.objects.DnsEntry类还提供了一个delete()方法,用于从实例中删除DnsEntry对象。
域名服务器
管理域的名称服务器。
Nameserver 类
当列出transip.v6.objects.Domain对象的所有名称服务器时,将返回一个transip.v6.objects.Nameserver对象的列表。
class Nameserver
Nameserver类提供了以下属性:
- hostname:此名称服务器的域名。
- ipv4:此名称服务器的可选IPv4粘合记录。
- ipv6:此名称服务器的可选IPv6粘合记录。
列出域名的域名服务器
通过在transip.v6.objects.Domain对象上调用nameserver.list()来检索您在TransIP账户中注册的单个域的名称服务器。这将返回一个transip.v6.objects.Nameserver对象的列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the nameservers of a single domain.
nameservers = domain.nameservers.list()
# Show the nameserver information on the screen.
for nameserver in nameservers:
print(f"Nameserver: {nameserver.hostname}")
更新域名的域名服务器
通过在transip.v6.objects.Domain对象上调用nameservers.replace()来一次性更新您在TransIP账户中注册的单个域的所有名称服务器。
注意:这将删除域上之前配置的所有名称服务器。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the nameservers of the domain.
nameservers = domain.nameservers.list()
# Update the ipv4 glue record of the first nameserver.
nameserver[0].ipv4 = '195.135.195.195'
# Replace all the records with the updated ones
domain.nameservers.replace(nameservers)
VPS
管理VPS和相关资源的文档尚未编写。请随时提交一个问题,以添加文档中缺失的部分。
HA-IP
管理HA-IP和相关资源的文档尚未编写。请随时提交一个问题,以添加文档中缺失的部分。
托管
管理托管和相关资源的文档尚未编写。请随时提交一个问题,以添加文档中缺失的部分。
托管
管理托管位置。
共址服务类
在列出您的TransIP账户中的所有托管位置时,会返回一个transip.v6.objects.Colocation
对象列表。
类 Colocation
Colocation类提供了以下属性:
- name:托管位置名称。
- ipRanges:IP地址范围列表。
列出所有共址服务
通过调用transip.TransIP.colocations.list()
检索您TransIP账户中注册的托管位置。这将返回一个transip.v6.objects.Colocation
对象列表。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve the colocations registered in your TransIP account.
colocations = client.colocations.list()
# Show the colocations information on the screen.
for colocation in colocations:
ip_ranges = ' '.join(colocation.ipRanges)
print(f"Colocation: {colocation.name} has IP ranges: {ip_ranges}")
获取共址服务
通过调用transip.TransIP.colocations.get(name)
根据其ID检索您TransIP账户中注册的单个托管位置。这将返回一个transip.v6.objects.Colocation
对象。
例如
import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)
# Retrieve a colocation by its name.
colocation = client.colocations.get('example2')
# Show colocation information on the screen.
ip_ranges = ' '.join(colocation.ipRanges)
print(f"Colocation: {colocation.name} has IP ranges: {ip_ranges}")
变更日志
以下记录了python-transip
的所有重要更改。
未发布
0.6.0 (2021-11-01)
添加
- Python 3.10支持 (#49)。
0.5.0 (2021-02-10)
添加
- 从
transip.v6.objects.Domain.nameservers
服务中一次性替换单个域所有现有名称服务器的选项。 - 从
transip.TransIP.colocations
服务中列出所有托管位置的选项 (#24)。 - 从
transip.TransIP.colocations
服务中通过名称检索单个托管位置的选项 (#24)。 - 允许访问令牌从所有IP地址而不是仅从白名单中的IP地址使用的选项 (#46)。
0.4.0 (2021-01-24)
添加
- 此
CHANGELOG.md
文件以列出每个版本的python-transip
的所有重要更改。 transip.TransIP.api_test
服务,允许调用测试资源以确保一切正常。- 从
transip.TransIP.invoices
服务中列出附加到您的TransIP账户的所有发票的选项。 - 从
transip.v6.objects.Invoice
对象将发票保存为PDF文件的选项。 - 从
transip.TransIP.products
服务中列出TransIP中所有可用的产品的选项。 - 从
transip.v6.objects.SshKey
对象更新单个SSH密钥的选项。 - 从
transip.v6.objects.Domain.dns
服务以及从transip.v6.objects.DnsEntry
对象更新单个DNS记录内容的选项。 - 从
transip.v6.objects.Domain.dns
服务一次性替换单个域所有现有DNS记录的选项。
项目详情
下载文件
下载适合您平台的自定义文件。如果您不确定选择哪一个,请了解有关安装软件包的更多信息。
源分发
构建分发
python-transip-0.6.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d9fd984db4eda4f91b99083c21ad6e00c718c734ad200a53d113fe680c871fe0 |
|
MD5 | ab3ab8d76bc399d76d90b9a90553e47f |
|
BLAKE2b-256 | 487a74ef7cbf1db5335c59ab30dd2f531e4d45b133a1dc0f73745fe9b4ecef05 |