Skip to main content

Hetman Codetable provides centralized, standardized response codes for APIs and applications. It ensures consistency by treating codes as a single source of truth.

Project description

Hetman Logo

Hetman Codetable provides centralized, standardized response codes for APIs and applications. It ensures consistency by treating codes as a single source of truth.

Installation

pip install hetman-codetable

Why use this?

Managing response codes and messages across an application can become chaotic. Hetman Codetable allows you to:

  1. Centralize all your application codes and messages in one place.
  2. Standardize API responses with consistent error codes and messages.
  3. Internationalize (i18n) messages easily, switching languages dynamically.

Usage Example

Defining Codetables

You can organize your codes into multiple classes for better structure, even while sharing the same namespace.

from codetable import Codetable, msg, i18n

# 1. Set the base locale (Critical for i18n)
i18n.set_base_locale("en")

class UserError(Codetable):
    NAMESPACE = "user"

    NOT_FOUND = msg("User not found.")

    ALREADY_EXISTS = i18n(
        en="User already exists.",
        pl="Użytkownik już istnieje.",
    )

class UserSuccess(Codetable):
    NAMESPACE = "user"

    CREATED = msg("User created successfully.")

    UPDATED = i18n(
        en="User updated successfully.",
        pl="Użytkownik został zaktualizowany pomyślnie.",
    )

Accessing Codes

# --- 1. Accessing Standard Codes ---
print(UserError.NOT_FOUND)
# Output: {'code': 'user.not_found', 'msg': 'User not found.'}

print(UserSuccess.CREATED)
# Output: {'code': 'user.created', 'msg': 'User created successfully.'}

# --- 2. Accessing i18n Codes (Default: English, i18n.set_base_locale("en")) ---
print(UserError.ALREADY_EXISTS)
# Output: {'code': 'user.already_exists', 'msg': 'User already exists.'}

# --- 3. Switching Locales (for all i18n codes) ---
i18n.set_locale("pl")

print(UserError.ALREADY_EXISTS)
# Output: {'code': 'user.already_exists', 'msg': 'Użytkownik już istnieje.'}

print(UserSuccess.UPDATED)
# Output: {'code': 'user.updated', 'msg': 'Użytkownik został zaktualizowany pomyślnie.'}

Customizing Key Maps

You can custom output keys globally or per-table by modifying the key_map.

# Change default keys globally
Codetable.key_map = {"code": "error_code", "value": "message"}

print(UserError.ALREADY_EXISTS)
# Output: {'error_code': 'user.already_exists', 'message': 'Użytkownik już istnieje.'}

Core Features

  • Namespace Management: Automatically prefixes codes with the table's namespace (e.g., user.not_found).
  • Strict Typing: Built with Python type hints for excellent IDE support.
  • Dynamic Descriptor Protocol: Codes know their own variable names and parent tables automatically.
  • Context-Aware I18n: Uses contextvars to handle per-request locales safely in async environments.

Project details


Download files

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

Source Distribution

hetman_codetable-1.0.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

hetman_codetable-1.0.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file hetman_codetable-1.0.0.tar.gz.

File metadata

  • Download URL: hetman_codetable-1.0.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hetman_codetable-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e6ce898ee6d5e2f7e4ff04417be5bab22b3dc991f98abe4b2bae51cb59b5fd3f
MD5 0750b63c11a5f0d470f0977ccb909e73
BLAKE2b-256 19b7c83aba0cc2d233aa18a25eebeb794f2078136721994930821506af781653

See more details on using hashes here.

Provenance

The following attestation bundles were made for hetman_codetable-1.0.0.tar.gz:

Publisher: python-publish.yml on hetman-app/hetman-codetable

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hetman_codetable-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hetman_codetable-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 21109b1123c926cc1d8dafd73649c9ea16280497b8f7375f3cbb4a0b0911198d
MD5 2c699a8de8264daf2af813208c130e6d
BLAKE2b-256 da206f1d20ee3ab5bd7deffa5a231827d0c94ce20e7088504fdfbdebda8cf99e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hetman_codetable-1.0.0-py3-none-any.whl:

Publisher: python-publish.yml on hetman-app/hetman-codetable

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page