Skip to main content

ConstSpace 🚀

GitHub repo PyPI version License: MIT

ConstSpace is an ultra-lightweight Python library for defining read-only, non-instantiable, and type-safe constant namespaces.

It is designed to eliminate the verbosity of Python's Enum (which requires .value access) and the lack of protection in plain classes.


🌟 Key Features

  • Zero .value Overhead: Access constants directly. What you see is what you get, with perfect IDE autocompletion.
  • Class-Level Read-Only Protection: Uses metaclasses to block any attempt to modify or delete class attributes at runtime.
  • Strict Non-instantiability: Ensures classes are used purely as namespaces. Attempting to instantiate will raise a TypeError.
  • Unified Type Grouping: The decorator automatically injects a base class, allowing you to use ConstSpaceType for clean type hinting and management.
  • Seamless Integration: Supports direct references between attributes during definition and works perfectly with static type checkers like MyPy.

📦 Installation

pip install constspace

🚀 Quick Start

1. Define Your Constant Space

from constspace import constspace

@constspace
class ServiceConfig:
    API_KEY = "v1_sec_123"
    TIMEOUT = 60
    # Reference attributes directly without .value or self
    SIGNATURE = f"prefix_{API_KEY}_suffix" 

2. Security & Constraints

# ✅ Normal Access
print(ServiceConfig.SIGNATURE) 

# ❌ Modify attribute -> Raises AttributeError
ServiceConfig.API_KEY = "new_key" 

# ❌ Instantiate -> Raises TypeError
cfg = ServiceConfig() 

3. Type Hinting & Management

from typing import List
from constspace import constspace, ConstSpaceType

@constspace
class MySQL:
    PORT = 3306

@constspace
class Redis:
    PORT = 6379

# Use ConstSpaceType (alias for Type[ConstSpace]) for constraints
def print_port(cfg: ConstSpaceType):
    print(f"Port is: {cfg.PORT}")

configs: List[ConstSpaceType] = [MySQL, Redis]
for c in configs:
    print_port(c)

🧐 Why ConstSpace?

Feature ConstSpace Enum Dataclass (frozen)
Easy Access ✅ Direct Value ❌ Requires .value ✅ Direct Value
Block Instance ✅ Strictly Enforced ❌ Allowed by default ❌ Allowed by default
Class Attribute Protection ✅ Strictly Read-only ❌ Allowed to modify ❌ Only protects instances
Type Integrity ✅ Original Types ❌ Enum Member Type ✅ Original Types

📜 License

MIT License.

Metadata

Release files for constspace 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for constspace 0.1.5
File Size Uploaded
constspace-0.1.5.tar.gz 7.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for constspace 0.1.5
File Interpreter ABI Platform
constspace-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 13.0 kB

Release files / constspace-0.1.5.tar.gz

Download URL constspace-0.1.5.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e11caeb056ace8b01ae3926d4ee3b61184151c3c90dd747e963b9b62ba8c8961
BLAKE2b-256 checksum
How to use checksums
ae06927c24d61320d04f3c084ba74bfa21074c36d220070fbd2ca4c60dd3de47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release files / constspace-0.1.5-py3-none-any.whl

Download URL constspace-0.1.5-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c821e0b4f3e634a5a761be6b200291c0a2b5bdbbcebf8f27e88896a948b70fbd
BLAKE2b-256 checksum
How to use checksums
63afd922d97cc47963d431ce6f9869fb9d552bc76cb4a32e6c0d42b8db7a295f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release 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