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.'}

Lazy Load

i18n.set_locale("en")

error = UserError.lazy("ALREADY_EXISTS")

print(error())
# Output: {'code': 'user.already_exists', 'msg': 'User already exists.'}

success = UserSuccess.lazy("UPDATED")

print(success())
# Output: {'code': 'user.updated', 'msg': 'User updated successfully.'}

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.3.tar.gz (9.0 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.3-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hetman_codetable-1.0.3.tar.gz
  • Upload date:
  • Size: 9.0 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.3.tar.gz
Algorithm Hash digest
SHA256 8e044a76b9b4ead2b458ec19d5fab9f01eb0b4f160c3958cd2180a81cf67ad5e
MD5 1e7abe76a8e1c0896507d5b1dfff4f40
BLAKE2b-256 05f4b42e1f1db6bac0ebb442243314f1a64975328820ee110025c8f5bd0ddd17

See more details on using hashes here.

Provenance

The following attestation bundles were made for hetman_codetable-1.0.3.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.3-py3-none-any.whl.

File metadata

File hashes

Hashes for hetman_codetable-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c6413365e02dc93050a7b019bbf56c92057833b4f17d2244273e7f6a51ddc9c7
MD5 d6cd4a1219286bc8d71c5177ab903636
BLAKE2b-256 4ae19225b44f16cdfb46489ba1f1667e69f9b96a6b1e1c483a3d2289ebe9f004

See more details on using hashes here.

Provenance

The following attestation bundles were made for hetman_codetable-1.0.3-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