NFTLabs Python SDK
PyPi package found here.
Deprecation Notices
1 of 2
The nftlabs-sdk
pypi package will be deprecated on November 30th, 2021
Please make sure you install the new thirdweb-sdk
package found here
In your code, update all imports to use the thirdweb
package and switch to using the ThirdwebSdk
package (instead of the NftlabsSdk
package)
2 of 2
The collection
module has been renamed to bundle
and will be deprecated on November 30th, 2021
All references to collection
module and its associated classes should be updated to bundle
and its newely created classes.
You can find the detailed documentation for the bundle
module here
Docs
https://docs.nftlabs.co
API Reference
https://python-docs.nftlabs.co/
Installing the SDK
$ pip install thirdweb-sdk
Package Structure
nftlabs
├── abi // contains autogenerated ABI contract wrappers
├── errors // commonly thrown errors
├── modules // NFT, Currency, Marketplace, Pack, Bundle, etc modules
├── options // Options classes used throughout the SDK
├── sdk.py // NftlabsSdk class, wrapper for the entire package
├── storage // Distributed file storage helper classes
└── types // Types consumed by some of the methods exposed in the modules
Calling the modules
You can call the NFTLabs modules by instantiating an SDK object and fetching the module with your contract address
like this:
import os
from nftlabs import NftlabsSdk, SdkOptions
sdk = NftlabsSdk(SdkOptions(), "https://rpc-mumbai.maticvigil.com")
sdk.set_private_key(os.getenv("PKEY"))
nft_module = sdk.get_nft_module("0xbDfF8fb43688fB4D2184DF8029A7238ac1413A24")
print(nft_module.total_supply())
Development
Generating ABI wrappers
The abi
package contains autogenerated code compiled by the
0xchain abi-gen
tool found here.
Our protocols are developer at this repo.
Install the abi-gen
cli tool and use it to compile abi wrappers like this:
$
$ abi-gen --language Python -o nftlabs/abi --abis ../nftlabs-protocols/abi/NFT.json
Anytime there are ABI contract changes, you should regenerate the abi wrappers.
Writing Documentation
This package uses PyDoctor
to auto-generate docs. Each method, class and variable should have a detailed description of what it is meant for as a comment enclosed in triple quoation marks (""" """
) just below the line they are defined.
Example:
Do:
def my_method(self, arg1, arg2):
"""
This part goes into the documentation.
"""
return arg1 + arg2
Don't:
"""
This part will not go into the documentation.
"""
def my_method(self, arg1, arg2):
return arg1 + arg2
Addtionally, each module should also have a docstring at the top of the file. This will be used as a breif descroption of the module on the homepage of the documentation.
Example:
1 """Interact with the NFT module of the app"""
2
3