# cfx-address
Conflux base32 address utilities
Full documentation -> https://conflux-fans.github.io/cfx-address/cfx_address.html#module-cfx_address
## installation
```bash
pip install cfx-address
```
### use Base32Address class methods
```python
from cfx_address import Base32Address
```
#### validate a base32 address
``` python
Base32Address.is_valid_base32("0x1ecde7223747601823f7535d7968ba98b4881e09")
# False
Base32Address.validate("0x1ecde7223747601823f7535d7968ba98b4881e09")
# will raise an exception
```
#### encode and decode
``` python
# encode hex address to base32
Base32Address.encode("0x1ecde7223747601823f7535d7968ba98b4881e09", network_id=1)
#'cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4'
# decode base32 address
Base32Address.decode("cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4")
# result:
# {'network_id': 1,
# 'hex_address': '0x1ecde7223747601823f7535d7968ba98b4881e09',
# 'address_type': 'user'}
```
#### utilities
```python
address_str = "cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4"
address_verbose_str = "CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4"
assert Base32Address.equals(address_str, address_verbose_str)
Base32Address.calculate_mapped_evm_space_address(address_str)
Base32Address.zero_address(network_id=1)
Base32Address.shorten_base32_address(address_str)
```
### Base32Address instances
#### instance initialization
```python
address = Base32Address("cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4")
# 'cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4'
# Base32Address inherits from str
assert isinstance(address, str)
# init from hex address, in which case network_id is required
Base32Address("0x1ecde7223747601823f7535d7968ba98b4881e09", network_id=1029)
# 'cfx:aatp533cg7d0agbd87kz48nj1mpnkca8be7ggp3vpu'
# change a base32 address to other network
Base32Address(address, network_id=1029)
# 'cfx:aatp533cg7d0agbd87kz48nj1mpnkca8be7ggp3vpu'
# verbose option defaults to False
Base32Address(address, verbose=True)
# 'CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4'
```
#### __eq__ and properties
```python
# __eq__ is implemented, address in same network is treated equal
assert address == "cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4"
assert address == "CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4"
assert "CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4" == address
assert "cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4" == address
# address in different network is not equal
mainnet_address = Base32Address(address, 1029)
assert mainnet_address == "cfx:aatp533cg7d0agbd87kz48nj1mpnkca8be7ggp3vpu"
assert not address == mainnet_address
# properties
[
address.address_type,
address.network_id,
address.hex_address,
address.verbose_address,
address.short,
address.mapped_evm_space_address
address.eth_checksum_address
]
# ['user',
# 1,
# '0x1ecde7223747601823f7535d7968ba98b4881e09',
# 'CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4',
# 'cfxtest:aat...95j4',
# '0x349f086998cF4a0C5a00b853a0E93239D81A97f6',
# '0x1ECdE7223747601823f7535d7968Ba98b4881E09']
```
Raw data
{
"_id": null,
"home_page": "",
"name": "cfx-address",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "Conflux,base32,address",
"author": "The Conflux foundation",
"author_email": "wangpan@conflux-chain.org",
"download_url": "https://files.pythonhosted.org/packages/84/2d/f5f416aa2ab1c32af76e7fe4b641b5c31ec166f9b8b909041f844b1126f7/cfx-address-1.0.0.tar.gz",
"platform": null,
"description": "# cfx-address\n\nConflux base32 address utilities\n\nFull documentation -> https://conflux-fans.github.io/cfx-address/cfx_address.html#module-cfx_address\n\n## installation\n\n```bash\npip install cfx-address\n```\n\n### use Base32Address class methods\n\n```python\nfrom cfx_address import Base32Address\n```\n\n#### validate a base32 address\n``` python\nBase32Address.is_valid_base32(\"0x1ecde7223747601823f7535d7968ba98b4881e09\") \n# False\nBase32Address.validate(\"0x1ecde7223747601823f7535d7968ba98b4881e09\")\n# will raise an exception\n```\n\n#### encode and decode\n\n``` python\n# encode hex address to base32\nBase32Address.encode(\"0x1ecde7223747601823f7535d7968ba98b4881e09\", network_id=1)\n#'cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4'\n\n# decode base32 address\nBase32Address.decode(\"cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4\")\n# result:\n# {'network_id': 1,\n# 'hex_address': '0x1ecde7223747601823f7535d7968ba98b4881e09',\n# 'address_type': 'user'}\n```\n\n#### utilities\n\n```python\naddress_str = \"cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4\"\naddress_verbose_str = \"CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4\"\nassert Base32Address.equals(address_str, address_verbose_str)\n\nBase32Address.calculate_mapped_evm_space_address(address_str)\nBase32Address.zero_address(network_id=1)\nBase32Address.shorten_base32_address(address_str)\n```\n\n### Base32Address instances\n\n#### instance initialization\n\n```python\naddress = Base32Address(\"cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4\")\n# 'cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4'\n\n# Base32Address inherits from str\nassert isinstance(address, str)\n\n# init from hex address, in which case network_id is required\nBase32Address(\"0x1ecde7223747601823f7535d7968ba98b4881e09\", network_id=1029)\n# 'cfx:aatp533cg7d0agbd87kz48nj1mpnkca8be7ggp3vpu'\n\n# change a base32 address to other network\nBase32Address(address, network_id=1029)\n# 'cfx:aatp533cg7d0agbd87kz48nj1mpnkca8be7ggp3vpu'\n\n# verbose option defaults to False\nBase32Address(address, verbose=True)\n# 'CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4'\n```\n\n#### __eq__ and properties\n\n```python\n# __eq__ is implemented, address in same network is treated equal\nassert address == \"cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4\"\nassert address == \"CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4\"\nassert \"CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4\" == address\nassert \"cfxtest:aatp533cg7d0agbd87kz48nj1mpnkca8be1rz695j4\" == address\n\n# address in different network is not equal\nmainnet_address = Base32Address(address, 1029)\nassert mainnet_address == \"cfx:aatp533cg7d0agbd87kz48nj1mpnkca8be7ggp3vpu\"\nassert not address == mainnet_address\n\n# properties\n[\n address.address_type,\n address.network_id,\n address.hex_address,\n address.verbose_address,\n address.short,\n address.mapped_evm_space_address\n address.eth_checksum_address\n]\n# ['user',\n# 1,\n# '0x1ecde7223747601823f7535d7968ba98b4881e09',\n# 'CFXTEST:TYPE.USER:AATP533CG7D0AGBD87KZ48NJ1MPNKCA8BE1RZ695J4',\n# 'cfxtest:aat...95j4',\n# '0x349f086998cF4a0C5a00b853a0E93239D81A97f6',\n# '0x1ECdE7223747601823f7535d7968Ba98b4881E09']\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "",
"version": "1.0.0",
"split_keywords": [
"conflux",
"base32",
"address"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "56f918eba84776653446e817cf1b7c79",
"sha256": "52185b2848f2781087168062ec7030bd386dcf35a01801cac6fd948850b6fa96"
},
"downloads": -1,
"filename": "cfx_address-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "56f918eba84776653446e817cf1b7c79",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 13953,
"upload_time": "2022-12-19T07:13:00",
"upload_time_iso_8601": "2022-12-19T07:13:00.577520Z",
"url": "https://files.pythonhosted.org/packages/2c/ff/b811c47dd060e39c8a46c9a9b8522c9d82fa9b9f1742eee277e4100b24db/cfx_address-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "0fe581672107346de472b94bbd9f2676",
"sha256": "902e7f580b1447eb40a336d0ab6ceba060fa78b416da022cca0adaa48a9300d4"
},
"downloads": -1,
"filename": "cfx-address-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "0fe581672107346de472b94bbd9f2676",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 13528,
"upload_time": "2022-12-19T07:13:02",
"upload_time_iso_8601": "2022-12-19T07:13:02.114873Z",
"url": "https://files.pythonhosted.org/packages/84/2d/f5f416aa2ab1c32af76e7fe4b641b5c31ec166f9b8b909041f844b1126f7/cfx-address-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-19 07:13:02",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "cfx-address"
}