Skip to main content

ByteForge Crypto Commons

A Python library providing common models and utilities for cryptocurrency projects. This library serves as a foundation for building cryptocurrency-related applications by providing standardized data models and types.

Features

  • Standardized Data Models: Well-defined Python dataclasses for representing cryptocurrency data
  • Type Safety: Full type hints and documentation for all models
  • Comprehensive Market Data: Support for various market metrics and statistics
  • Flexible Design: Optional fields for extended data while maintaining core required fields

Installation

pip install byteforge-crypto-commons

Usage

Token State

The TokenState class represents the complete state of a cryptocurrency token at a specific moment in time:

from crypto_commons.types.token_state import TokenState
from crypto_commons.types.quote import Quote
import datetime

# Dates/times are stored as unix-timestamp ints (seconds since the epoch)
now_ts = int(datetime.datetime.now().timestamp())

# Create a quote for USD
quote = Quote(
    base_currency="USD",
    price=50000.0,
    volume_24h=1000000000.0,
    percent_change_1h=1.5,
    percent_change_24h=5.0,
    percent_change_7d=10.0,
    percent_change_30d=20.0,
    market_cap=1000000000000.0,
    last_updated=now_ts
)

# Create a token state
token_state = TokenState(
    id=1,
    name="Bitcoin",
    symbol="BTC",
    timestamp=now_ts,
    quote_map={"USD": quote}
)

Quote

The Quote class represents market data for a cryptocurrency in a specific currency:

from crypto_commons.types.quote import Quote
import datetime

quote = Quote(
    base_currency="USD",
    price=50000.0,
    volume_24h=1000000000.0,
    percent_change_1h=1.5,
    percent_change_24h=5.0,
    percent_change_7d=10.0,
    percent_change_30d=20.0,
    market_cap=1000000000000.0,
    last_updated=int(datetime.datetime.now().timestamp())  # unix timestamp
)

TokenInfo

The TokenInfo class represents basic information about a cryptocurrency token:

from crypto_commons.types.token_info import TokenInfo
import datetime

token_info = TokenInfo(
    id=1,
    rank=1,
    name="Bitcoin",
    symbol="BTC",
    slug="bitcoin",
    status=1,
    is_active=1,
    first_historical_data=int(datetime.datetime(2010, 7, 17).timestamp()),  # unix timestamp
    last_historical_data=int(datetime.datetime.now().timestamp()),  # unix timestamp
    platform=None
)

Data Models

TokenState

Represents the complete state of a cryptocurrency token, including:

  • Basic information (id, name, symbol)
  • Market data through Quote objects
  • Supply metrics (circulating, total, max supply)
  • Status indicators (is_active, is_fiat)
  • Additional metadata (tags, platform, creation date)

TokenInfo

Represents basic information about a cryptocurrency token, including:

  • Core identifiers (id, name, symbol, slug)
  • Market rank and status
  • Historical data availability
  • Platform information (for tokens on other blockchains)
  • Active status indicator

Quote

Represents market data for a cryptocurrency in a specific currency, including:

  • Price and volume data
  • Market capitalization
  • Percentage changes over various time periods
  • Supply metrics
  • Additional market statistics

CryptocurrencyInfo

Rich token metadata (the heavier payload from a cryptocurrency info endpoint), complementing the lightweight TokenInfo. Includes description, logo, tags, date_added / date_launched (unix timestamps), and two nested models:

  • CryptocurrencyPlatform — the on-chain platform a token is deployed on (chain identifiers plus the token's contract address); None for native L1s
  • CryptocurrencyUrls — categorized URL bundle (website, explorer, source code, social, etc.)

Since version 0.7, contract_addresses lists per-chain deployments as CryptocurrencyPlatform objects. It defaults to an independent empty list on each instance. The existing platform field and positional constructor arguments retain their meaning.

For CMC's contract_address[] payload, SDK parsers should map entry.platform.coin.id/name/symbol/slug to each platform's identity fields and entry.contract_address to token_address. Thus name uses the native coin's name, not entry.platform.name, and id is a CMC ID, not an EVM chain ID. The models store this data; SDKs are responsible for populating it. Consumers should select the desired chain explicitly rather than relying on list order or assuming the single platform represents their desired chain.

Requirements

  • Python 3.8 or higher
  • No third-party dependencies (stdlib only)

License

This project is licensed under the O'Saasy License - see the LICENSE file for details (https://osaasy.dev/).

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Author

  • Jason Byteforge

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

byteforge_crypto_commons-0.7.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

byteforge_crypto_commons-0.7-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file byteforge_crypto_commons-0.7.tar.gz.

File metadata

  • Download URL: byteforge_crypto_commons-0.7.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for byteforge_crypto_commons-0.7.tar.gz
Algorithm Hash digest
SHA256 18cf3a4b980303919a42d3a619e55eb897f5d78dd011914e76d34b2dfa9677d1
MD5 6a707046a7a30a6020b73bbb6f9c5bdd
BLAKE2b-256 ff7e44dd0f3efd5dc39c92e3391f4ba45203d4c4caee39992a5143f219633340

See more details on using hashes here.

File details

Details for the file byteforge_crypto_commons-0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for byteforge_crypto_commons-0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d802f8e3249fb00a5920fc7013e1e428c0a637e4fc947cf1eb7d23eca4b6fbce
MD5 91a4145a68b6a5f61b47c9272bf7fb9a
BLAKE2b-256 18f4e2913d96b021242e7a2eba6c39f1674b73b7d0adf91727f2a2c460a8ba64

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.7 This release

2 files

0.6

2 files

0.5

2 files

0.4

2 files

0.3

2 files

0.2

2 files

0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page