{ "info": { "author": "zcc0721", "author_email": "zcc0721@foxmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "pybtm\n======\n\n- [1 Installation](#1-installation)\n- [2 Usage](#2-usage)\n - [2.1 Create entropy](#21-create-entropy)\n - [2.2 Create mnemonics](#22-create-mnemonics)\n - [2.3 Create seed](#23-create-seed)\n - [2.4 Create root expanded private key](#24-create-root-expanded-private-key)\n - [2.5 Create expanded public key](#25-create-expanded-public-key)\n - [2.6 Create expanded private key](#26-create-expanded-private-key)\n - [2.7 Create public key](#27-create-public-key)\n - [2.8 Create child expanded private key](#28-create-child-expanded-private-key)\n - [2.9 Create child expanded public key](#29-create-child-expanded-public-key)\n - [2.10 Sign message](#210-sign-message)\n - [2.11 Verify signature](#211-verify-signature)\n - [2.12 Create new key](#212-create-new-key)\n - [2.13 Create HD path](#213-create-hd-path)\n - [2.14 Create control program](#214-create-control-program)\n - [2.15 Create address](#215-create-address)\n - [2.16 Create new address](#216-create-new-address)\n - [2.17 Submit raw transaction](#217-submit-raw-transaction)\n - [2.18 Decode raw transaction](#218-decode-raw-transaction)\n\nPython3 implementation of the Bytom protocol.\n\n## 1 Installation\n\n```\n$ pip install pybtm\n```\n\nRequires:\n\n- Python>=3.7\n\n## 2 Usage\n\n### 2.1 Create entropy\n\nget_entropy() create 128 bits entropy.\n\nReturn:\n\n- entropy_hexstr: 128 bits entropy.\n\n```python\n>>> from pybtm import key\n>>> key.get_entropy()\n'100e2704b431f914e3262926bdba6fce'\n```\n\n### 2.2 Create mnemonics\n\nget_mnemonic create 12 new mnemonics.\n\nParameter:\n\n- entropy_hexstr(optional): 128 bits entropy, type is hex string.\n\nReturn:\n\n- mnemonic_str: 12 mnemonics.\n\n```python\n>>> key.get_mnemonic('089fe9bf0cac76760bc4b131d938669e')\n'ancient young hurt bone shuffle deposit congress normal crack six boost despair'\n```\n\nIf no paramater is specified, it will return 12 new random mnemonics.\n\n```python\n>>> from pybtm import key\n>>> key.get_mnemonic()\n'nothing gate perfect glide wink lizard journey negative load quote wrong reason'\n```\n\n### 2.3 Create seed\n\nget_seed create 512 bits seed from 12 mnemonics.\n\nParameter:\n\n- mnemonic_str: 12 mnemonics.\n\nReturn:\n\n- seed_hexstr: 512 bits seed, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> key.get_seed('ancient young hurt bone shuffle deposit congress normal crack six boost despair')\n'afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4'\n```\n\n### 2.4 Create root expanded private key\n\nget_root_xprv create root expanded private key.\n\nParameter:\n\n- seed_hexstr: 512 bits seed, type is hex string.\n\nReturn:\n\n- root_xprv_hexstring: 512 bits seed, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> key.get_root_xprv('afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4')\n'302a25c7c0a68a83fa043f594a2db8b44bc871fced553a8a33144b31bc7fb84887c9e75915bb6ba3fd0b9f94a60b7a5897ab9db6a48f888c2559132dba9152b0'\n```\n\n### 2.5 Create expanded public key\n\nget_xpub create expanded public key.\n\nParameter:\n\n- xprv_hexstr: 512 bits expanded private key, type is hex string.\n\nReturn:\n\n- xpub_hexstr: 512 bits expanded public key, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> xprv_hexstr = 'c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'\n>>> key.get_xpub(xprv_hexstr)\n'1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'\n```\n\n### 2.6 Create expanded private key\n\nget_expanded_private_key create expanded private key.\n\nParameter:\n\n- xprv_hexstr: 512 bits expanded private key, type is hex string.\n\nReturn:\n\n- expanded_private_key_hexstr: 512 bits expanded private key, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> xprv_hexstr = '406c82307bf7978d17f3ecfeea7705370e9faef2027affa86c8027c6e11a8a50e231e65bd97048850ae6c39d0f46b63ae70aa24f5aac7877727c430c2201e6d6'\n>>> key.get_expanded_private_key(xprv_hexstr)\n'406c82307bf7978d17f3ecfeea7705370e9faef2027affa86c8027c6e11a8a50d828bf44b1a109c2bbb4c72685858e2f2ab8b405beef1e4ecc12d1ed8511e8eb'\n```\n\n### 2.7 Create public key\n\nget_public_key create 32 bytes public key.\n\nParameter:\n\n- xpub_hexstr: 512 bits expanded public key, type is hex string.\n\nReturn:\n\n- public_key_hexstr: 256 bits public key, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> xpub_hexstr = 'ecc2bbb6c0492873cdbc81edf56bd896d3b644047879840e357be735b7fa7b6f4af1be7b8d71cc649ac4ca3816f9ccaf11bf49f4effb845f3c19e16eaf8bfcda'\n>>> key.get_public_key(xpub_hexstr)\n'ecc2bbb6c0492873cdbc81edf56bd896d3b644047879840e357be735b7fa7b6f'\n```\n\n### 2.8 Create child expanded private key\n\nget_child_xprv create child private key.\n\nParameter:\n\n- xprv_hexstr: 512 bits expanded private key, type is hex string.\n- path_list: 010203 7906a1\n\nReturn:\n\n- child_xprv_hexstr: 512 bits private key, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> xprv_hexstr = 'c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'\n>>> path_list = ['010203', '7906a1']\n>>> key.get_child_xprv(xprv_hexstr, path_list)\n'4853a0b00bdcb139e85855d9594e5f641b65218db7c50426946511397e094759bd9de7f2dcad9d7d45389bc94baecaec88aabf58f6e1d832b1f9995a93ec37ea'\n```\n\n### 2.9 Create child expanded public key\n\nget_child_xpub create child public key.\n\nParameter:\n\n- xpub_hexstr: 512 bits expanded public key, type is hex string.\n- path_list: 010203 7906a1\n\nReturn:\n\n- child_xpub_hexstr: 512 bits public key, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> xpub_hexstr = '1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'\n>>> path_list = ['010203', '7906a1']\n>>> key.get_child_xpub(xpub_hexstr, path_list)\n'e65c1a9714e2116c6e5d57dee188a53b98dc901a21def5a5ca46fcf78303f4f2bd9de7f2dcad9d7d45389bc94baecaec88aabf58f6e1d832b1f9995a93ec37ea'\n```\n\n### 2.10 Sign message\n\nxprv_sign sign message.\n\nParameter:\n\n- xprv_hexstr: 512 bits expanded private key, type is hex string.\n- message_hexstr: message, type is hex string.\n\nReturn:\n\n- signature_hexstr: 512 bits signature, type is hex string.\n\n```python\n>>> from pybtm import key\n>>> xprv_hexstr = '88c0c40fb54ef9c1b90af8cce8dc4c9d54f915074dde93f79ab61cedae03444101ff37ac4a07869214c2735bba0175e001abe608db18538e083e1e44430a273b'\n>>> message_hexstr = '1246b84985e1ab5f83f4ec2bdf271114666fd3d9e24d12981a3c861b9ed523c6'\n>>> key.xprv_sign(xprv_hexstr, message_hexstr)\n'ab18f49b23d03295bc2a3f2a7d5bb53a2997bed733e1fc408b50ec834ae7e43f7da40fe5d9d50f6ef2d188e1d27f976aa2586cef1ba00dd098b5c9effa046306'\n```\n\n### 2.11 Verify signature\n\nxpub_verify verify signature.\n\nParameter:\n\n- xpub_hexstr: 512 bits expanded public key, type is hex string.\n- message_hexstr: message, type is hex string.\n- signature_hexstr: 512 bits signature, type is hex string.\n\nReturn:\n\n- result: True or False.\n\n```python\n>>> from pybtm import key\n>>> xpub_hexstr = 'cb22ce197d342d6bb440b0bf13ddd674f367275d28a00f893d7f0b10817690fd01ff37ac4a07869214c2735bba0175e001abe608db18538e083e1e44430a273b'\n>>> message_hexstr = '1246b84985e1ab5f83f4ec2bdf271114666fd3d9e24d12981a3c861b9ed523c6'\n>>> signature_hexstr = 'ab18f49b23d03295bc2a3f2a7d5bb53a2997bed733e1fc408b50ec834ae7e43f7da40fe5d9d50f6ef2d188e1d27f976aa2586cef1ba00dd098b5c9effa046306'\n>>> key.xpub_verify(xpub_hexstr, message_hexstr, signature_hexstr)\nTrue\n```\n\n### 2.12 Create new key\n\nget_new_key create new key.\n\nParameter:\n\n- entropy_hexstr(optional): 128 bits entropy, type is hex string.\n- mnemonic_str(optional): 12 mnemonics.\n\nReturn:\n\n- entropy: 128 bits entropy.\n- mnemonic: 12 mnemonics.\n- seed: 512 bits seed.\n- xprv: 512 bits expaneded private key.\n- xpub: 512 bits expaneded public key.\n- xprv_base64: xprv hex string qrcode base64.\n\n```python\n>>> from pybtm import key\n>>> r = key.get_new_key()\n>>> r['entropy']\n'8466b1128f92051361c9aa2de52d1bb0'\n>>> r['mnemonic']\n'love culture dwarf busy cake meadow mango crystal combine city eight genuine'\n>>> r['seed']\n'4d15bf0f72bad754987fdcd0628ea37af03ac24666019c6d362e0200c9b49bee35aa0a788ed09e3a86cd529df0a1c20ea6aa719cf1e0da4ffb15efbc38fba498'\n>>> r['xprv']\n'f09ad64c2714b45e23c75e4541ad771def99b97e6da16b0cc6bcdac045f4d34745b62093173fd8f9a67e1da4b81233bc947880b6ed4b9641cf8f5223212fa18d'\n>>> r['xpub']\n'ebcc4b14444adb207dd53fd89b2881b21e839de42a1b6687a5a9d83b82c1b5b645b62093173fd8f9a67e1da4b81233bc947880b6ed4b9641cf8f5223212fa18d'\n>>> r['xprv_base64']\n{'base64': '/9j/4AAQSkZJRgABAQAAAQABAAD...'}\n```\n\n```python\n>>> from pybtm import key\n>>> r = key.get_new_key(entropy_hexstr='4d33735a9e92f634d22aecbb4044038d')\n>>> r['entropy']\n'4d33735a9e92f634d22aecbb4044038d'\n>>> r['mnemonic']\n'essay oppose stove diamond control bounce emerge frown robust acquire abstract brick'\n```\n\n```python\n>>> from pybtm import key\n>>> r = key.get_new_key(mnemonic_str='ancient young hurt bone shuffle deposit congress normal crack six boost despair')\n>>> r['entropy']\n''\n>>> r['mnemonic']\n'ancient young hurt bone shuffle deposit congress normal crack six boost despair'\n>>> r['seed']\n'afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4'\n```\n\n### 2.13 Create HD path\n\nget_path_from_index create HD path.\n\nParameter:\n\n- account_index_int: 1, 2, 3, ..., type is hex string.\n- address_index_int: 1, 2, 3, ..., type is hex string.\n- change_bool: If receiver is change, change_bool is True, otherwise the change_bool is False.\n\nReturn:\n\n- path_list: path list.\n- path_str: path string.\n\n```python\n>>> from pybtm import receiver\n>>> account_index_int = 1\n>>> address_index_int = 1\n>>> change_bool = True\n>>> receiver.get_path_from_index(account_index_int, address_index_int, change_bool)\n{'path': ['2c000000', '99000000', '01000000', '01000000', '01000000'], 'path_str': 'm/44/153/1/1/1'}\n```\n\n### 2.14 Create control program\n\nget_control_program create control program.\n\nParameter:\n\n- account_index_int: account index, e.g. 1, 2, 3...\n- address_index_int: address index, e.g. 1, 2, 3...\n- change_bool: If receiver is change, change_bool is True, otherwise the change_bool is False.\n- xpub_hexstr: 512 bits expanded public key, type is hex string.\n\nReturn:\n\n- control_program_hexstr: type is hex string.\n\n```python\n>>> from pybtm import receiver\n>>> account_index_int = 1\n>>> address_index_int = 1\n>>> change_bool = False\n>>> xpub_hexstr = '3c6664244d2d57168d173c4691dbf8741a67d972b2d3e1b0067eb825e2005d20c5eebd1c26ccad4de5142d7c339bf62cc1fb79a8b3e42a708cd521368dbc9286'\n>>> receiver.get_control_program(account_index_int, address_index_int, change_bool, xpub_hexstr)\n'0014052620b86a6d5e07311d5019dffa3864ccc8a6bd'\n```\n\n### 2.15 Create address\n\nget_address create address from control program.\n\nParameter:\n\n- control_program_hexstr: control program.\n- network_str: 3 types of network is available: mainnet, testnet and solonet.\n\nReturn:\n\n- address: bytom address.\n\n```python\n>>> from pybtm import receiver\n>>> control_program_hexstr = '001431f2b90b469e89361225aae370f73e5473b9852b'\n>>> network_str = 'mainnet'\n>>> receiver.get_address(control_program_hexstr, network_str)\n'bm1qx8etjz6xn6ynvy394t3hpae723emnpft3nrwej'\n```\n\n### 2.16 Create new address\n\nget_new_address create new address.\n\nParameter:\n\n- xpub_hexstr: 512 bits expanded public key, type is hex string.\n- account_index_int: account index, e.g. 1, 2, 3...\n- address_index_int: address index, e.g. 1, 2, 3...\n- change_bool: If receiver is change, change_bool is True, otherwise the change_bool is False.\n- network_str: 3 types of network is available: mainnet, testnet and solonet.\n\nReturn:\n\n- path: BIP44 HD path.\n- control program: control program.\n- address: bytom address.\n- address_base64: bytom address image base64.\n\n```python\n>>> from pybtm import receiver\n>>> xpub_hexstr = '8fde12d7c9d6b6cbfbf344edd42f2ed86ae6270b36bab714af5fd5bb3b54adcec4265f1de85ece50f17534e42016ee9404a11fec94ddfadd4a064d27ef3f3f4c'\n>>> account_index_int = 1\n>>> address_index_int = 1\n>>> change_bool = False\n>>> network_str = 'solonet'\n>>> receiver.get_new_address(xpub_hexstr, account_index_int, address_index_int, change_bool, network_str)\n{'path': 'm/44/153/1/0/1', 'control_program': '00147640f3c34fe4b2b298e54e54a4692a47ce47aa5e', 'address': 'sm1qweq08s60ujet9x89fe22g6f2gl8y02j7lgr5v5', 'address_base64': '/9j/4AAQSkZJRgAB...'}\n```\n\n### 2.17 Submit raw transaction\n\nsubmit_transaction submit transaction.\n\nParameter:\n\n- raw_transaction_hexstr: raw transaction.\n- submit_url: you can send raw transaction through submit_url.\n\nReturn:\n\n- result: If submit transaction successfully, result is 1.\n\n```python\n>>> from pybtm import transaction\n>>> raw_transaction_hexstr = '070100010160015e5dfc352f9247985e92b2688a9a0a0e3e45a52f633c7d2c35cf6485fc1f03a89cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc030101160014052620b86a6d5e07311d5019dffa3864ccc8a6bd630240988348a301c86563eb16105cc0c7e12e8cd1fbc7e9031933dac05a32d2a696bc77b83f25a99a4a9458d976c5327b8004918545a3fde567f28d805f741db54e0b20e87ca3acdebdcad9a1d0f2caecf8ce0dbfc73d060807a210c6f225488347961402013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80b6f7f302011600147950bb5fcfb1c3fe14198c14ebd4ad85bb69bbc500013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8084af5f011600141d8e1c2d71843f41e2131d7fd6df8b47e2cf56b900'\n>>> submit_url = 'https://blockmeta.com/api/wisdom/broadcast-transaction'\n>>> transaction.submit_transaction(raw_transaction_hexstr, submit_url)\n'1'\n```\n\n```python\n>>> from pybtm import transaction\n>>> raw_transaction_hexstr = '07010001015f015d2f4a8f10afbc0448779fadd916a3f1b8518ffe0b7d20fdf470d8e9b4993ef2b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0d8883200011600144a594e3e4cbbd87629476e7ee24c1637df66c0b76302406fd39079681118840fd6fd66cdff769f2d05d8520312e9dd559dc23c36a3cb3921e47cba233d5d2267eb0f128a908d1bab877e172e880d3f36dc6a5e5826540c202854e5c181f5a862edd190e413d75937549758ef4902e1475aac52623f0a239302013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09dd81001160014f63f68597df5c88a92e04229e0fd08a3584ade3b00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80e1eb1701160014664f28ec6ab8826a028658dc0d0d1f94c6e20fa300'\n>>> submit_url = 'https://blockmeta.com/api/v2/broadcast-transaction'\n>>> transaction.submit_transaction(raw_transaction_hexstr, submit_url)\n'1'\n```\n\n### 2.18 Decode raw transaction\n\ndecode_raw_tx decode raw transaction.\n\nParameter:\n\n- raw_transaction_hexstr: raw transaction, type is hex string.\n- network_str: 3 types of network is available: mainnet, testnet and solonet.\n\nReturn:\n\n- tx: tx dict.\n\n```python\n>>> from pybtm import transaction\n>>> raw_transaction_hexstr = '070100010161015f28b7b53d8dc90006bf97e0a4eaae2a72ec3d869873188698b694beaf20789f21ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8099c4d5990100011600149335b1cbd4a77b78e33315a0ed10a95b12e7ca48630240897e2d9d24a3b5faaed0579dee7597b401491595675f897504f8945b29d836235bd2fca72a3ad0cae814628973ebcd142d9d6cc92d0b2571b69e5370a98a340c208cb7fb3086f58db9a31401b99e8c658be66134fb9034de1d5c462679270b090702013effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80f9f8bc98010116001406ce4b689ba026ffd3a7ca65d1d059546d4b78a000013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80c6868f01011600147929ef91997c827bebf60fa608f876ea27523c4700'\n>>> network_str = 'solonet'\n>>> transaction.decode_raw_tx(raw_transaction_hexstr, network_str)\n{'fee': 20000000, 'inputs': [{'address': 'sm1qjv6mrj755aah3cenzksw6y9ftvfw0jjgk0l2mw', 'amount': 41250000000, 'asset_definition': {}, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'control_program': '00149335b1cbd4a77b78e33315a0ed10a95b12e7ca48', 'input_id': '6e3f378ed844b143a335e306f4ba26746157589c87e8fc8cba6463c566c56768', 'spent_output_id': 'f229ec6f403d586dc87aa2546bbe64c5f7b5f46eb13c6ee4823d03bc88a7cf17', 'type': 'spend', 'witness_arguments': ['897e2d9d24a3b5faaed0579dee7597b401491595675f897504f8945b29d836235bd2fca72a3ad0cae814628973ebcd142d9d6cc92d0b2571b69e5370a98a340c', '8cb7fb3086f58db9a31401b99e8c658be66134fb9034de1d5c462679270b0907']}], 'outputs': [{'address': 'sm1qqm8yk6ym5qn0l5a8efjar5ze23k5k79qnvtslj', 'amount': 40930000000, 'asset_definition': {}, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'control_program': '001406ce4b689ba026ffd3a7ca65d1d059546d4b78a0', 'id': '74c73266730d3c6ea32e8667ef9b867068736b84be240fe9fef205fa68bb7b95', 'position': 0, 'type': 'control'}, {'address': 'sm1q0y57lyve0jp8h6lkp7nq37rkagn4y0z8hvh6kq', 'amount': 300000000, 'asset_definition': {}, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'control_program': '00147929ef91997c827bebf60fa608f876ea27523c47', 'id': 'f115a833d0c302a5006032858a7ed3987f0feb2daf2a9f849384950e4766af51', 'position': 1, 'type': 'control'}], 'size': 333, 'time_range': 0, 'tx_id': '814a73dd57bae67c604f9cbc696cbc42035577423408cb9267136ed971e2bf63', 'version': 1}\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Bytom/pybtm", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pybtm", "package_url": "https://pypi.org/project/pybtm/", "platform": "", "project_url": "https://pypi.org/project/pybtm/", "project_urls": { "Homepage": "https://github.com/Bytom/pybtm" }, "release_url": "https://pypi.org/project/pybtm/0.1.9/", "requires_dist": [ "ed25519 (>=1.4)", "pbkdf2 (>=1.3)", "pybase64 (>=0.5.0)", "qrcode (>=6.1)", "sha3 (>=0.2.1)", "six (>=1.12.0)" ], "requires_python": "", "summary": "Python3 implementation of the Bytom protocol.", "version": "0.1.9" }, "last_serial": 5122907, "releases": { "0.0.19": [ { "comment_text": "", "digests": { "md5": "97439cdb33185989f5d33394bf796353", "sha256": "1647488cd38a66c2ee50786802d583237bc609a01317795ad28c22e74dfc0da2" }, "downloads": -1, "filename": "pybtm-0.0.19-py3-none-any.whl", "has_sig": false, "md5_digest": "97439cdb33185989f5d33394bf796353", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28319, "upload_time": "2019-03-28T10:53:08", "url": "https://files.pythonhosted.org/packages/a2/ea/959a2c881585e1c10d7fa541218079a8130d8bb700acace2f5f300b72078/pybtm-0.0.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8989b0b2526c827a8330e508682a02c9", "sha256": "718f7564fe138edbe883a76dc5a1af21bf210039e1ce2c176433aab64d20de9b" }, "downloads": -1, "filename": "pybtm-0.0.19.tar.gz", "has_sig": false, "md5_digest": "8989b0b2526c827a8330e508682a02c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30001, "upload_time": "2019-03-28T10:53:10", "url": "https://files.pythonhosted.org/packages/31/41/eb5631601dd4b272d3047a1ae8592e0d1d036829c3a07e53d436313a8ac1/pybtm-0.0.19.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "e5664908e7ae747532f9d99f3904b9d8", "sha256": "0e9931c09d1fd95914fc387fd8949a35a0fb28687cd78d609296927b1670d470" }, "downloads": -1, "filename": "pybtm-0.0.20-py3-none-any.whl", "has_sig": false, "md5_digest": "e5664908e7ae747532f9d99f3904b9d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31944, "upload_time": "2019-03-29T07:27:22", "url": "https://files.pythonhosted.org/packages/9d/a9/64242384e972b0c5a65ab4a511dc7941b5128e425091981c6fe4b1277244/pybtm-0.0.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9f70076b626a16b25896393c0a0ea3a", "sha256": "055797260836a1dc8ba87728ac424e5dcfc5b3f07db35eb9b54eb61fc336cff5" }, "downloads": -1, "filename": "pybtm-0.0.20.tar.gz", "has_sig": false, "md5_digest": "b9f70076b626a16b25896393c0a0ea3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34231, "upload_time": "2019-03-29T07:27:24", "url": "https://files.pythonhosted.org/packages/24/9c/04238a3f5e88502f430e254ec4379ba5c38793be7689fcdcf514b2a6d679/pybtm-0.0.20.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "2046e7895a030d07ae7699f4f7781cfb", "sha256": "520e5ae379714e6580b807835cb6cc13a8c7bc4abb39fdc14b9745b3c64bea93" }, "downloads": -1, "filename": "pybtm-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2046e7895a030d07ae7699f4f7781cfb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32910, "upload_time": "2019-03-29T07:46:59", "url": "https://files.pythonhosted.org/packages/fd/b8/485bd892c9f4710f0ffd771c0573b25d9cecc5678ebdcb4abbb69bb81d70/pybtm-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "881ea8e42bc25576103045ade70f3911", "sha256": "e38292caf6b7fb5654fec5f71bf5ff3478dac9e31d1e6b8213e093be65c90202" }, "downloads": -1, "filename": "pybtm-0.1.0.tar.gz", "has_sig": false, "md5_digest": "881ea8e42bc25576103045ade70f3911", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36120, "upload_time": "2019-03-29T07:47:01", "url": "https://files.pythonhosted.org/packages/bd/6e/1fcbcf1854b86b202c4176175a6db49562e329cd7642b05f94fa20852e52/pybtm-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "cb3df19962d83f7c64764be89257ec34", "sha256": "983ca274d3ccff361c3666f89d405ab1f0b8d3e7393c053a326ef871498a64e3" }, "downloads": -1, "filename": "pybtm-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cb3df19962d83f7c64764be89257ec34", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32914, "upload_time": "2019-04-01T02:53:36", "url": "https://files.pythonhosted.org/packages/38/40/2bb700c26070db363d8526b65a82c4b442aa613a990f0f06ac3ae2d87c28/pybtm-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "384b88d780992b36f7371d4e91941404", "sha256": "688c1a43b875fe6afddcbe3440fdc74947726232ec51ad59ea20d3f6144c33af" }, "downloads": -1, "filename": "pybtm-0.1.1.tar.gz", "has_sig": false, "md5_digest": "384b88d780992b36f7371d4e91941404", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36142, "upload_time": "2019-04-01T02:53:39", "url": "https://files.pythonhosted.org/packages/cd/c5/4bc83d90a9c197abac29386024affca86224c893279f3e1856ee7c531b31/pybtm-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c7b4811f366ce2b5665bf3c5f41e0a16", "sha256": "42ad8b9f3f0658fb76b30514bd60fbc1c87bc3ef7a536915aa0a4c83d9991263" }, "downloads": -1, "filename": "pybtm-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c7b4811f366ce2b5665bf3c5f41e0a16", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33092, "upload_time": "2019-04-01T03:03:10", "url": "https://files.pythonhosted.org/packages/33/e7/46d82fe462280935688b39ae89eaeb4571e0100edd31f496be01e7c7f126/pybtm-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c58a71eb635e6c085c3671a3b730ec3", "sha256": "eef61e1549b52e90ae6580548e6f93eb26df213dde6142219ed12258c07de13d" }, "downloads": -1, "filename": "pybtm-0.1.2.tar.gz", "has_sig": false, "md5_digest": "2c58a71eb635e6c085c3671a3b730ec3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36324, "upload_time": "2019-04-01T03:03:13", "url": "https://files.pythonhosted.org/packages/6d/4e/3e37a364520b6a18ffcfc99225a64e3c00de9b17f0d460826862f517a98b/pybtm-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "161c435c780b2c8e10a7a39cbcfe569a", "sha256": "5c2235c044ce59394054eda8d4b8f0207f4ecb94dd34931fb544292bf535225f" }, "downloads": -1, "filename": "pybtm-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "161c435c780b2c8e10a7a39cbcfe569a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33797, "upload_time": "2019-04-01T03:56:44", "url": "https://files.pythonhosted.org/packages/a5/7f/460afc9143de6e39ad60d0884db2e65b595a85ab0a46bf9d2de8a1bd22fa/pybtm-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40a582f8802c538e1ef23b01e5d7b302", "sha256": "e8e7d2236e57ccc247e562b85cdb7639cd6d60c49cd6cd56675366e5bdf04729" }, "downloads": -1, "filename": "pybtm-0.1.3.tar.gz", "has_sig": false, "md5_digest": "40a582f8802c538e1ef23b01e5d7b302", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37886, "upload_time": "2019-04-01T03:56:46", "url": "https://files.pythonhosted.org/packages/d1/64/16c1c13e452dc11a5e2e0b92ec33acbe7b51f95d925b63cb1a6f63f8795d/pybtm-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "5ccdcb0b1f673e92932c1f42714930b3", "sha256": "6da1ce54df65d882aef186adcd29f0f6eb4be9f183be0fdc95fe0116674c8662" }, "downloads": -1, "filename": "pybtm-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5ccdcb0b1f673e92932c1f42714930b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7097, "upload_time": "2019-04-02T02:37:16", "url": "https://files.pythonhosted.org/packages/65/28/9bef72db44b00c45ccca3c7e4b8dce9b83af4460bb53d3847003cbb63892/pybtm-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9aa955d30c6e6d35f77acfa2a4a37aeb", "sha256": "f35c37da52b6f0c2fa217645188066286d791a87109a01530857b9dbb8965046" }, "downloads": -1, "filename": "pybtm-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9aa955d30c6e6d35f77acfa2a4a37aeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8600, "upload_time": "2019-04-02T02:37:19", "url": "https://files.pythonhosted.org/packages/f0/f2/ac450a7fc5fa081f4f5c66550be90fea9fcf31a954ed8d7e76490b6059e9/pybtm-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "cadace558dda714c2676e16f7e242572", "sha256": "5b52bf45db0d99052d7bd3e698df04863e9412aafca8ac6e4734649b2f719730" }, "downloads": -1, "filename": "pybtm-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cadace558dda714c2676e16f7e242572", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33796, "upload_time": "2019-04-02T02:39:17", "url": "https://files.pythonhosted.org/packages/41/1d/9de1e6a5789d6a94da1d22afd99711bbcfa660d6eaa139f5d9f600941e56/pybtm-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c1e627839f78e67e0a586130e7e2325", "sha256": "84a52f96ac7e00cf4dffdcde98b86ea46974b5cbb346ae3a0c5bb4eb3f4b3e21" }, "downloads": -1, "filename": "pybtm-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9c1e627839f78e67e0a586130e7e2325", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37850, "upload_time": "2019-04-02T02:39:19", "url": "https://files.pythonhosted.org/packages/5e/dd/b29e4433cbc22fc6c55b2d1bfb2b37676103045b3da48e19eaba27b1cd1e/pybtm-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "5b4cad085c88d74b0c18c4722d0077aa", "sha256": "05f36a4045afab2d9f6296dbeab2087992b1c0d9ca2e87ab5949629e257f9a32" }, "downloads": -1, "filename": "pybtm-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "5b4cad085c88d74b0c18c4722d0077aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33801, "upload_time": "2019-04-02T02:41:31", "url": "https://files.pythonhosted.org/packages/1b/90/4e6409767fac1b9196ec825a044efd10fe70d38429dda3e38b9e99701742/pybtm-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0604152bf2d82b310899bff0164d02d", "sha256": "00ad6723da8e113138f3b928f7bca499ad6fb0bf990e1bf4df664110e34bd6c6" }, "downloads": -1, "filename": "pybtm-0.1.6.tar.gz", "has_sig": false, "md5_digest": "b0604152bf2d82b310899bff0164d02d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37859, "upload_time": "2019-04-02T02:41:33", "url": "https://files.pythonhosted.org/packages/f5/c9/0fe0fde46f4d5d173b9f69c276699e04a514d1ae9de3ab5d3dd15fd4343d/pybtm-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "b107e152180bfb2b3a95ba0fe2ed724f", "sha256": "8b892a97d8878c81c6a9ae15a3f39393a6fe67d8762dd3d9e5d20f791fa8784d" }, "downloads": -1, "filename": "pybtm-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "b107e152180bfb2b3a95ba0fe2ed724f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33855, "upload_time": "2019-04-10T08:16:38", "url": "https://files.pythonhosted.org/packages/a5/2e/96a3c90fa91a04b30e1fc6bbbc6c8a5237126ff0402c0c0b4fc12670232c/pybtm-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c542c5809dcb54c8f13275c3876bcf1b", "sha256": "20da1225093a5272b0815f1f818d40c2022c8f710de75567af79ca06a72f5a4a" }, "downloads": -1, "filename": "pybtm-0.1.7.tar.gz", "has_sig": false, "md5_digest": "c542c5809dcb54c8f13275c3876bcf1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37911, "upload_time": "2019-04-10T08:16:40", "url": "https://files.pythonhosted.org/packages/e3/97/1d79e9b769aa6feee60e9449083ee662c4eeb4c09aa54003fbb32198765e/pybtm-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "1de14a5f52feca57909d3092e092c942", "sha256": "b890f9f1ea47c0ee2df7284dec3c9ca79bf92ea93040d0526996f3a65b745f9a" }, "downloads": -1, "filename": "pybtm-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "1de14a5f52feca57909d3092e092c942", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33847, "upload_time": "2019-04-10T08:38:52", "url": "https://files.pythonhosted.org/packages/04/79/351467b12e09678ffa65fae0cf91e030d85b852c2a0913a1e8af644b4d0c/pybtm-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7fcbe454c20b77d263b7d92cb6d7316f", "sha256": "be044effcbb1bf3c8731c089be62f455571479e47d13e7826191b43f97dbf1ce" }, "downloads": -1, "filename": "pybtm-0.1.8.tar.gz", "has_sig": false, "md5_digest": "7fcbe454c20b77d263b7d92cb6d7316f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37910, "upload_time": "2019-04-10T08:38:54", "url": "https://files.pythonhosted.org/packages/85/1b/2371982613f8084957b4cdef95a5643c26974b28cd3a3af9949f6b560a85/pybtm-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "fad5249c31523a0dec73ee9274dd6c66", "sha256": "1614c461efdffc246ff8d8716f19e88d1ab1e4a4181d56ae53ef34a152aa9882" }, "downloads": -1, "filename": "pybtm-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fad5249c31523a0dec73ee9274dd6c66", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33845, "upload_time": "2019-04-10T08:45:28", "url": "https://files.pythonhosted.org/packages/da/71/0acb4c0bfb9be3ff38d58506be8b0c7ab7c7eb9f40a58f48bf92cf0689ac/pybtm-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8279bd7d74ae2c51d9933809e218d552", "sha256": "983ed21b347c159c99fedd7d646ff01b489af23a764d551cf0c458237081a037" }, "downloads": -1, "filename": "pybtm-0.1.9.tar.gz", "has_sig": false, "md5_digest": "8279bd7d74ae2c51d9933809e218d552", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37911, "upload_time": "2019-04-10T08:45:30", "url": "https://files.pythonhosted.org/packages/13/a8/02c06329a21c41fa1e9bb6f3e48ad78302df6f93a782a53e7ef55f409080/pybtm-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fad5249c31523a0dec73ee9274dd6c66", "sha256": "1614c461efdffc246ff8d8716f19e88d1ab1e4a4181d56ae53ef34a152aa9882" }, "downloads": -1, "filename": "pybtm-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fad5249c31523a0dec73ee9274dd6c66", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33845, "upload_time": "2019-04-10T08:45:28", "url": "https://files.pythonhosted.org/packages/da/71/0acb4c0bfb9be3ff38d58506be8b0c7ab7c7eb9f40a58f48bf92cf0689ac/pybtm-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8279bd7d74ae2c51d9933809e218d552", "sha256": "983ed21b347c159c99fedd7d646ff01b489af23a764d551cf0c458237081a037" }, "downloads": -1, "filename": "pybtm-0.1.9.tar.gz", "has_sig": false, "md5_digest": "8279bd7d74ae2c51d9933809e218d552", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37911, "upload_time": "2019-04-10T08:45:30", "url": "https://files.pythonhosted.org/packages/13/a8/02c06329a21c41fa1e9bb6f3e48ad78302df6f93a782a53e7ef55f409080/pybtm-0.1.9.tar.gz" } ] }