Skip to main content

(φ) PHICODE Runtime Engine — Optimized production engine (CPython/PyPy Supported)

Project description

# (φ) Phicode Engine

Below is a thorough look at what this engine does, how it’s put together, designed & any “hidden”/less obvious behaviors

## What it is (at a glance)

Phicode lets you write Python using a symbolic alphabet (e.g., ¿ for if, for try, π for print) and run it as if it were normal Python. It does this by (1) multi-tier transpiling your sources to Python (regex → optimized Python → Rust acceleration), (2) enterprise-grade caching with corruption recovery and integrity verification, (3) seamless importing files via a custom meta-path finder/loader with full package support, and (4) adaptive interpreter switching (PyPy vs CPython) based on dependency analysis. The package also exposes an HTTP server with subprocess isolation and a comprehensive CLI.

This is a production-ready symbolic Python runtime with enterprise-grade engineering patterns—delivering 176M+ chars/sec peak transpilation performance with optimization techniques found in major tech company codebases.

## My project philosophy

“I believe in architectural minimalism with deterministic reliability - every line of code must earn its place through measurable value, not feature-rich design patterns. I build systems that work predictably in production, not demonstrations of architectural sophistication. My approach is surgical: target the exact problem with minimal code, reuse existing components rather than building new ones, and resist feature bloat by consistently asking whether each addition truly serves the core purpose. I favor synchronous, predictable flows over async complexity, apply optimizations only to proven bottlenecks with measurable impact, and choose tools based on performance characteristics that match workload requirements, not popular trends. I maintain strict separation of concerns across modules where each component has a single, well-defined responsibility, and preserve code readability and maintainability as primary concerns. My constraint-driven design ensures files never exceed 150 lines of code - complexity that cannot fit must be properly decomposed - and I design with cross-platform considerations and real-world deployment constraints in mind while implementing robust error handling without over-engineering every possible edge case. Production stability trumps cutting-edge patterns; I prioritize deterministic behavior and long-runtime stability over unpredictable innovation. I build what works, not what impresses.”

— Jay Baleine

## Core capabilities

  • Multi-tier symbolic → Python transpilation. The engine automatically selects optimal transpilation methods: Python regex for small files (<300KB), optimized Python with frequency-based symbol ordering (_COMMON_SYMBOL_ORDER) and adaptive ordering based on source analysis for medium files, and Rust acceleration for large files (300KB+) achieving 25M+ chars/sec with 64-byte chunk processing and symbol byte scanning via memoryview. It translates symbols using a configurable map covering control flow, built-ins, and pattern matching. Notably includes match/case (, ), built-ins like ℓ`→`len, ⟪`→`range, №`→`enumerate, ⨅`→`zip, ∑`→`sum, ⭱`→`max, ⭳`→`min, τ`→`type, and the walrus operator ().

    The default symbol mapping ships in config and can be written to user config (.(φ)/config.json) via the config generator. Custom mappings support complete language localization with ASCII identifier boundary detection using b regex anchors—you can map Python keywords to any language (e.g., “True”: “Verdadero”, “if”: “si” for Spanish) with conflict detection, strict validation mode (PHICODE_STRICT), and logging deduplication to prevent spam.

  • Enterprise-grade module importing. A custom MetaPathFinder/Loader resolves modules and full packages (including __init__.φ files) with LRU-decorated path resolution (@lru_cache(maxsize=256)) in your project tree using (primary) and .py (secondary) extensions. Features comprehensive stdlib protection using sys.builtin_module_names plus path filtering for site-packages/dist-packages/lib paths, canonical path caching with 1000-entry LRU limit (_canon_cache) to minimize filesystem operations, spec caching with mtime validation using (spec, mtime) tuples, and cache clearing on finder deletion via __del__ method. Graceful fallback from to .py files when needed.

  • Sophisticated caching architecture. Features a four-tier LRU cache hierarchy with enterprise-grade reliability: (1) raw source cache with mmap for files >8KB and exponential backoff retry logic (3 attempts with 0.01s base delay), (2) transpiled Python cache with xxhash acceleration (MD5 fallback) and symbol mapping hash keys, (3) import spec cache with mtime validation, (4) interpreter hint cache for optimal runtime selection.

    Durability engineering: Cache eviction strategy removes 25% or minimum 64 items when exceeding CACHE_MAX_SIZE. Atomic writes via tmp+rename+fsync pattern with batched processing (groups of 5) to minimize syscalls. Integrity verification using importlib-style headers with embedded source hashes, marshal validation for bytecode corruption detection, and automatic cache rebuilding on corruption. Platform-optimized buffering (128KB POSIX, 64KB Windows) with move-to-end LRU optimization for cache efficiency.

  • Intelligent interpreter management. During transpilation, dependency scanning detects C-extensions (numpy/pandas/scipy/etc.) using import string analysis and suggests/auto-switches to CPython via subprocess isolation (capture_output=True); otherwise defaults to PyPy for speed. Switches use -m phicode_engine <original_module> <args> with cache flush for safety and 5-second timeout enforcement. Includes performance recommendations with user guidance and interpreter detection algorithm checking available interpreters. Paths can be overridden by env (PHITON_PATH for CPython, PHIPY_PATH for PyPy).

  • Production-grade runtime ergonomics. The runtime sets up comprehensive signal handling (SIGINT/SIGTERM) with signal name mapping for informative error messages, registers shutdown hooks with reverse order execution and atexit registration, installs the importer for the resolved source folder, warns on slow startup (>25ms), and ensures top-level modules execute as __main__ with proper argument hygiene via clean argv context management preventing global pollution. Features resource cleanup redundancy (hooks + destructors), duplicate shutdown protection, temp file cleanup in cache directories, engine-branded syntax error wrapping with source location preservation, and runtime import failure recovery with module existence validation and automatic interpreter switching for compatibility issues.

  • Security-first HTTP API & comprehensive CLI. The APHI server exposes /info, /symbols, /convert, and /execute with subprocess isolation for security, Content-Length validation preventing empty request attacks, JSON parsing error boundaries, UTF-8 encoding enforcement, and request field validation. Checks engine availability and returns version/Python info (Phicode 2.2.0). Supports bidirectional conversion (Python ↔ φ), symbol mapping exposure for tooling integration, and remote execution with timeout protection.

    CLI features early-exit flag handling, mutual exclusion groups for interpreter selection (–python, –pypy, –cpython), config management (–config-generate, –config-reset), performance debugging (–debug), and version management. Temporary argv context management ensures clean argument passing to module main() functions.

  • Sophisticated Rust integration. The PhiRust accelerator includes automatic binary downloads from GitHub releases with cargo fallback compilation, performance benchmarking with built-in speed measurement, JSON encoder caching using frozenset hashing to avoid repeated serialization, symbol byte optimization using 64-byte chunk processing for cache efficiency, and graceful degradation with seamless Python fallback. Binary installation includes retry logic and filesystem safety checks. A RUST_SIZE_THRESHOLD (300KB) determines when to prefer Rust for transpilation.

## Architecture & flow (how the pieces fit)

  1. Entry & initialization: phicode_engine.engine:main() parses args with early-exit handling for version/help flags, toggles debug logging with centralized control, and hands off to core.runtime.run().

  2. Runtime setup: Registers shutdown hooks with signal handling (SIGINT/SIGTERM plus atexit), resolves your target (main module by default) to file or module with `.φ`/`.py` detection, installs the Phicode importer rooted at that folder with canonical path optimization, sets main module designation for correct __main__ semantics, and includes startup performance monitoring with 25ms warning threshold.

  3. Import flow with LRU optimization: PhicodeFinder maps pkg.mod to <base>/pkg/mod.φ (or .py as fallback) using LRU-decorated path resolution, skips stdlib/site-packages with explicit protection via sys.builtin_module_names filtering, caches import specs with mtime validation using (spec, mtime) tuples, and returns spec using PhicodeLoader for files. Supports full package hierarchies with __init__.φ detection and cache clearing on deletion.

  4. Load/Exec with enterprise patterns: * PhicodeLoader pulls source from PhicodeCache (four-tier LRU with canonical path caching), transpiles to Python with multi-tier optimization and symbol frequency analysis, optionally triggers interpreter switching with subprocess isolation, compiles via BytecodeManager with integrity verification and marshal validation, then hands to ModuleExecutor, marking __main__ if it matches the initial module. Syntax errors wrapped with engine branding. * ModuleExecutor runs the code object with proper argument context management; if the resolved target was a Python module (not ) and exposes main(), the runtime calls it with temporary `argv` shim for clean argument passing.

  5. Caching architecture with reliability engineering: * PhicodeCache is a four-tier LRU over: (a) raw source with mmap optimization (>8KB threshold), exponential backoff retry logic (3 attempts), and platform-specific buffering, (b) transpiled Python with xxhash/MD5 hashing and symbol mapping keys, (c) import specs with mtime-based invalidation, (d) interpreter hints for performance optimization. Uses canonical path caching (1000 entries), cache eviction strategy (25% or 64 items), and move-to-end LRU optimization. * BytecodeManager decides hashed cache paths under .(φ)cache/comφled_<impl>_<pyver>/, validates headers with importlib format + source hashes, batches writes (groups of 5) with atomic operations (tmp+rename+fsync), includes marshal validation and corruption detection with automatic recovery. A __del__ on the finder flushes as a safety net.

## Design choices

  • Meta-importer with LRU optimization. Using a MetaPathFinder makes feel first-class alongside Python packages and supports full packages with `__init__.φ`. LRU decorators on path resolution (@lru_cache(maxsize=256)) plus canonical path caching (1000 entries) and mtime-based spec caching dramatically reduce filesystem chatter.

  • Enterprise-grade defensive programming. Multiple fallback layers at every level: batching + tmp-rename + fsync = practical durability without excessive syscalls. Exponential backoff (3 attempts, 0.01s base delay) handles transient file system issues. Marshal validation and corruption recovery ensure sources run even if caching fails. Resource cleanup redundancy (shutdown hooks + destructors + atexit) prevents leaks. Graceful degradation when optional components fail.

  • Performance-first architecture with byte-level optimization. Multi-tier acceleration with automatic method selection, symbol frequency estimation with _COMMON_SYMBOL_ORDER for dynamic ordering, memoryview byte-level detection avoiding string operations, 64-byte chunk processing in Rust, and xxhash preference with MD5 fallback. Import-string sniffing to choose PyPy vs CPython is simple yet effective, with intelligent performance recommendations.

  • Developer experience excellence. Logging consistently branded with (φ), debug enabled centrally, symbol mapping generated/reset via user-editable JSON. Startup performance monitoring warns when boot exceeds 25ms. Error context preservation with engine branding, argument passing hygiene preventing global state pollution, and comprehensive exception handling in all critical paths.

## Hidden/less obvious features & behaviors

  • Symbol coverage goes beyond keywords. You don’t just get if/for/try; many built-ins and utilities have symbols (e.g., , , , , , , τ). This makes viable for concise algorithmic code without constant back-and-forth to Python names.

  • Multi-location config discovery with filesystem resilience. Looks for .(φ)/config.json (primary) and .phicode/config.json (fallback), helping environments that dislike special characters in directory names. Config generation includes filesystem safety checks.

  • Four-tier cache intelligence with enterprise patterns. Beyond basic spec caching, includes interpreter hint caching for optimal runtime selection, transpilation caching with symbol mapping hash keys using frozenset, and source caching with canonical path optimization. Integrity verification uses marshal validation with automatic corruption recovery and cache rebuilding.

  • Comprehensive lifecycle management with redundancy. Batch cache writes registered as shutdown hooks with reverse order execution, signal handlers for SIGINT/SIGTERM with signal name mapping, atexit registration for additional safety, redundant cleanup via finder destructors, resource cleanup with proper ordering and exception handling, duplicate shutdown protection, and temp file cleanup in cache directories.

  • API server security architecture with process isolation. HTTP endpoints mirror CLI functions with subprocess isolation (capture_output=True) for safety, Content-Length validation preventing empty requests, JSON parsing error boundaries, UTF-8 encoding enforcement, request field validation, and 5-second timeout enforcement. /symbols and /convert expose transpiler functionality; server delegates heavy lifting to controlled subprocess for input validation and resource limits.

  • Advanced symbol configuration with conflict resolution. Custom mappings support ASCII identifier detection with b regex anchors, conflict validation with warnings, strict validation mode (PHICODE_STRICT env var), complete language localization, and logging deduplication to prevent spam. Symbol frequency estimation enables dynamic ordering for performance optimization with adaptive symbol ordering based on source analysis.

  • Multi-tier performance optimization with byte-level scanning. Engine uses memoryview for byte-level symbol detection avoiding string operations, 64-byte chunk processing for cache efficiency in Rust, adaptive symbol ordering based on usage patterns, xxhash acceleration with MD5 fallback for fast hashing, JSON encoder caching using frozenset hashing, and platform-specific buffer optimization (128KB POSIX, 64KB Windows).

  • Extensive environment-driven configuration with performance tuning. Cache behavior tunable via PHICODE_CACHE_SIZE (LRU limits), PHICODE_MMAP_THRESHOLD (8KB default), PHICODE_BATCH_SIZE (5 default). Import analysis toggleable with PHICODE_IMPORT_ANALYSIS, validation with PHICODE_VALIDATION/PHICODE_STRICT, interpreter paths via PHITON_PATH/PHIPY_PATH, and performance thresholds via RUST_SIZE_THRESHOLD/STARTUP_WARNING_MS.

  • Rust integration sophistication with automatic management. PhiRust accelerator includes automatic binary downloads from GitHub releases with retry logic, cargo fallback compilation with timeout handling, performance benchmarking with built-in measurement, JSON encoder caching to avoid re-serialization, symbol byte optimization for non-ASCII detection, and size threshold activation ensuring optimal performance across file sizes.

  • Runtime import failure recovery with intelligent fallback. Module existence validation via importlib.find_spec() distinguishes between missing modules (typos) and compatibility issues. Interpreter environment detection identifies non-CPython runtimes (PyPy, etc.) and automatically attempts runtime interpreter switching to CPython for compatibility. Multi-layer error messaging with branded warnings for switch attempts, comprehensive error context for failures, and actionable user guidance including current interpreter identification and compatibility recommendations.

  • Package support depth with priority ordering. Full __init__.φ support for proper package hierarchies, LRU-decorated package detection, graceful fallback from to .py files, canonical path caching to minimize filesystem operations, and spec caching with mtime validation for efficient imports.

## Performance posture

  • Multi-tier fast path with byte-level optimization: Symbol transpile (tier selection with frequency analysis) → AST parse → compile(…, optimize=2) → batch queue write; subsequent runs: validate header+hash → load code object → exec. Rust acceleration for large files delivers 176M+ chars/sec peak performance (validated benchmarks) with 64-byte chunk processing. Symbol byte scanning via memoryview avoids string operations. Quite zippy, especially with PyPy on symbol-heavy code.

  • I/O discipline with enterprise reliability. Large reads use mmap with graceful fallback to buffered reads. File ops include exponential backoff (3 attempts, 0.01s base delay) for EBUSY/EAGAIN scenarios. Platform-specific buffering (128KB POSIX, 64KB Windows) maximizes throughput. Atomic writes with tmp+rename+fsync ensure durability. Marshal validation prevents corrupted bytecode execution.

  • Startup optimization with monitoring. Warns if boot takes >25ms, giving developers nudges when import graphs or disk are slow. Cache warmup strategies with LRU path resolution, lazy compilation, canonical path caching (1000 entries), and spec caching with mtime validation minimize cold-start overhead.

  • Symbol processing optimization with frequency analysis. Common symbols processed first (_COMMON_SYMBOL_ORDER), frequency-based ordering for dynamic workloads, adaptive symbol ordering based on source analysis, byte-level scanning with memoryview, 64-byte chunk processing, and ASCII identifier boundary detection using b regex anchors avoid unnecessary string operations.

  • Scaling architecture with intelligent selection. Multi-tier handles files from KB to GB: Python regex for small files, optimized Python with symbol frequency analysis and caching for medium files, Rust acceleration for large files (>300KB) delivering 176M+ peak, 2-5M sustained chars/sec. Cache eviction strategy (25% or 64 items) and xxhash/MD5 hashing maintain performance at scale.

## Developer experience (DX)

  • Rich debugging capabilities with comprehensive logging. Toggle –debug for verbose logs with (φ)-branded messages; early-exit flag handling before full parsing for performance; flags like –version/–list-interpreters/–show-versions supported. Interpreter-specific flags (–python, –pypy, –cpython) with mutual exclusion groups provide fine-grained control.

  • Clean abstractions with state isolation. Argument passing to Python module main() handled via temporary `argv` context manager (no global leakage). Error context preservation with engine-branded syntax error wrapping, startup performance insights with timing analysis, and comprehensive exception handling in all critical paths.

  • Integration-friendly server with security isolation. APHI server exposes conversion/symbols/execute, useful for editor integrations to “show me the Python” or run snippets remotely. Configurable ports, subprocess isolation (capture_output=True), timeout enforcement (5s), and input validation ensure security.

  • Configuration management with validation. Generate default configs with –config-generate, reset with –config-reset. Complete language localization support enables writing Python in any natural language through custom keyword mappings with conflict detection and strict validation mode. Filesystem safety checks prevent corruption.

  • Performance insights with monitoring. Built-in startup monitoring (25ms warning), cache hit rate tracking via LRU optimization, interpreter recommendation system with PyPy preference logic, and performance benchmarking in Rust integration help optimize development workflows.

  • Import system stdlib protection. Comprehensive detection using sys.builtin_module_names plus path filtering for site-packages, dist-packages, lib/python, and sys.prefix paths to prevent accidental interference with standard library imports.

## Configuration & customization

  • Symbol mapping flexibility with conflict resolution. Engine supports complete keyword remapping—from Unicode symbols to natural language keywords. Examples: {“True”: “Verdadero”, “False”: “Falso”, “if”: “si”} for Spanish, or mathematical symbols like {“for”: “∀”, “in”: “∈”}. ASCII identifier detection with b boundary anchors, conflict validation with logging deduplication, and strict mode (PHICODE_STRICT) treating conflicts as errors.

  • Validation modes with comprehensive detection. PHICODE_VALIDATION=true enables symbol conflict detection; PHICODE_STRICT=true treats conflicts as errors rather than warnings. Logging deduplication prevents spam from repeated conflicts.

  • Performance tuning with platform optimization. Environment variables control cache behavior (PHICODE_CACHE_SIZE=512 for LRU limits), memory mapping threshold (PHICODE_MMAP_THRESHOLD=8192), batch sizes (PHICODE_BATCH_SIZE=5), platform-specific buffering (128KB POSIX, 64KB Windows), and Rust threshold (RUST_SIZE_THRESHOLD=300000).

  • Interpreter preferences with detection override. Override dependency analysis with PHITON_PATH for CPython and PHIPY_PATH for PyPy. Import analysis disabled with PHICODE_IMPORT_ANALYSIS=false. Performance recommendations guide optimal interpreter selection.

  • Development toggles with monitoring control. Debug modes, validation strictness, feature flags, startup monitoring thresholds (STARTUP_WARNING_MS=25), retry configuration (MAX_FILE_RETRIES=3, RETRY_BASE_DELAY=0.01), and cache optimization settings provide fine-grained control over engine behavior without code changes.

## Performance & Validation Evidence

### Empirical Performance Validation 📊

Comprehensive Benchmark Results (August 21, 2025): - Peak Performance: 176M+ chars/sec (7x exceeds documented claims) - Sustained Performance: 2-5M chars/sec across 500K-5M file sizes - Performance Range: 121K - 176M chars/sec depending on content characteristics - Speedup Factor: 2,770x - 3,521x improvement over baseline

File Size Scaling Performance: - 1K files: ~1.5M chars/sec average - 10K files: ~2.1M chars/sec average - 100K files: ~2.2M chars/sec average - 1M files: ~3.4M chars/sec average - 5M files: ~5.3M chars/sec average

Symbol Density Impact Analysis: - 0% symbols (pure text): 150M+ chars/sec peak performance - 25% symbols: 30M+ chars/sec sustained performance - 50% symbols: 35M+ chars/sec sustained performance - 100% symbols: 40M+ chars/sec sustained performance

### Production Reliability Validation

Longitudinal Performance Stability (36+ hours): - Mean Throughput: 133.68 ± 7.3 (coefficient of variation: 5.5%) - Success Rate: 100% across ALL runs (48 individual tests) - Error Count: 0 total errors across comprehensive testing - Memory Stability: 49-52MB consistent footprint (no leaks)

Real-World Load Testing: - System Load: 20+ concurrent applications (YouTube, AI browsers, ML tools, etc.) - Test Success Rate: 100% pass rate under heavy system pressure - Memory Efficiency: 0.4-194MB per operation range - Resource Management: Zero temporary file leakage, clean shutdown

### PyPy vs CPython Performance 🚀

PyPy 3.11 Performance: ` CPU Intensive: 0.0026s avg (92x faster than CPython!) Memory Intensive: 0.070s avg, 206MB peak (170x faster, 73% less memory!) Transpilation: 933K-1.1M chars/sec Cache Speedup: 37x (97.3% efficiency) Consistency: ±4% variance across runs `

CPython 3.13 Performance: ` CPU Intensive: 0.244s avg Memory Intensive: 11.90s avg, 771MB peak Transpilation: 504K-7.5M chars/sec Cache Speedup: 12.4x (91.9% efficiency) Consistency: ±21% variance across runs `

Key Findings: - Performance Claims Validation: “3x faster with PyPy” is massively conservative - actual speedup is 90-170x - Memory Efficiency: PyPy delivers 73% memory reduction alongside performance gains - Consistency Advantage: PyPy shows ±4% variance vs CPython’s ±21% - Cache Optimization: PyPy demonstrates superior cache effectiveness (97% vs 92%)

### Self-Hosting Capability 🔄

Engine Self-Benchmark Results: ` Total Runtime: 0.049s Test Success Rate: 5/5 (100.0%) Symbol Transpilation: 19 symbols, 0.0003s Computation Operations: 1,112 operations, 0.0006s Memory Allocation: 0.02MB delta (efficient) Control Flow: 4,140 operations Total Operations: 16,967 operations processed Average Execution: 0.0017s per test Performance Rating: EXCELLENT (sub-10ms average execution) `

Meta-Programming Significance: - Recursive Validation: Engine successfully executes benchmarks written in φ-syntax - Real-time Transpilation: Greek symbols converted to Python during execution - Bootstrap Capability: Self-referential performance monitoring and optimization

## Enterprise capabilities

  • Robust error handling with graceful degradation. Comprehensive error recovery at all levels with fallback execution paths, runtime import failure recovery with module existence validation and automatic interpreter switching, cache corruption detection with automatic rebuilding via marshal validation, graceful degradation when optional components (Rust, PyPy) unavailable, and resource cleanup redundancy (hooks + destructors + atexit) ensure solid development experience.

  • Observability & monitoring with performance insights. Performance monitoring with startup time tracking (25ms warning), cache hit rate analysis via LRU optimization for optimization insights, interpreter recommendation system with PyPy preference logic for performance guidance, debug infrastructure with detailed introspection, performance benchmarking in Rust integration, and empirically validated metrics with 176M+ chars/sec peak performance and 100% reliability under production load.

  • Security model with process isolation. Subprocess isolation (capture_output=True) for safe code execution, input validation with comprehensive error handling and JSON parsing boundaries, resource limits via timeout enforcement (5s) preventing exhaustion, clean state management with temporary argv contexts avoiding global pollution, stdlib protection via comprehensive filtering preventing accidental overwrites, and Content-Length validation preventing attack vectors.

  • Production deployment patterns. Multi-tier architecture scaling from KB to GB files, cache optimization with platform-specific tuning, signal handling with graceful shutdown, configuration management with environment variable control, monitoring hooks for observability, error handling with context preservation suitable for production logging systems, and validated performance characteristics with longitudinal stability testing (36+ hours, zero failures) demonstrating enterprise-grade reliability.

This represents a production-ready language runtime with enterprise-grade engineering patterns—significantly more sophisticated than a simple symbol replacement tool, demonstrating reliability and performance optimization techniques found in major tech company codebases.

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

phicode-2.4.0.tar.gz (61.1 kB view details)

Uploaded Source

Built Distribution

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

phicode-2.4.0-py3-none-any.whl (82.2 kB view details)

Uploaded Python 3

File details

Details for the file phicode-2.4.0.tar.gz.

File metadata

  • Download URL: phicode-2.4.0.tar.gz
  • Upload date:
  • Size: 61.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for phicode-2.4.0.tar.gz
Algorithm Hash digest
SHA256 af7365d928c83255652a46385e2ee6237c2f2cd872e6c718a00014308d062cda
MD5 245e6f187646667283f15b984518a7fa
BLAKE2b-256 83959d871823a355299e126985a918eab442b6b38e1e8a81da910ae3c2226d35

See more details on using hashes here.

File details

Details for the file phicode-2.4.0-py3-none-any.whl.

File metadata

  • Download URL: phicode-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 82.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for phicode-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0b076f09ac7ba8e547573bc9d20739e640396ea510ee74d778ea1d87c0091d94
MD5 0249299f67925755ec0226744601dc76
BLAKE2b-256 4122086a17b81b7a33e17dc72921ae039072ef1bfc71f5ac2d25383df8e8f0bc

See more details on using hashes here.

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