| Crates.io | omnitype |
| lib.rs | omnitype |
| version | 0.1.1 |
| created_at | 2025-08-29 11:37:52.952146+00 |
| updated_at | 2025-08-29 17:18:58.665868+00 |
| description | A hybrid type checker for Python and other dynamic languages |
| homepage | |
| repository | https://github.com/bniladridas/omnitype |
| max_upload_size | |
| id | 1815744 |
| size | 196,452 |
[!TIP] Available commands for omnitype:
# Run all tests cargo test # Build in release mode cargo build --release # Run with debug logging RUST_LOG=debug cargo run -- check src/ # Launch the Terminal UI (default if no subcommand) cargo run # or explicitly cargo run -- --tui # Check Python files in a path (text or JSON output) cargo run -- check <path> --format text cargo run -- check <path> --format json # Set log level for any command cargo run -- --log-level debug check <path> # Fix annotations in place (adds : Any / -> Any and import) cargo run -- fix <path> --in-place # Runtime tracing for tests (captures actual types during execution) cargo run -- trace <path> --test <name>
[!NOTE] Current capabilities:
check: parses Python and reports per-file function/class counts plus diagnostics (e.g., missing param/return annotations). Exits with code 1 if diagnostics are found.fix: adds missing: Anyon untyped parameters and-> Anyon functions lacking a return type; insertsfrom typing import Anywhen needed.trace: executes Python files with runtime type tracing to collect actual type information from function calls and returns. Supports tracing specific test functions.- TUI: Files/Types/Errors/Logs/Editor tabs. Press
aon a.pyfile in Files to analyze. Errors tab lists diagnostics; Enter opens the file and the Editor jumps to the diagnostic line. Editor supports Up/Down scrolling.
[!WARNING] Scope and limitations (truth in advertising):
- Target language: Python. Point it at a
.pyfile or a directory of Python source.- Analysis: basic parsing + simple diagnostics (primarily missing parameter/return annotations). No full type inference or constraint solving yet.
- Fixes: heuristic text edits to add
: Any/-> Anyand the corresponding import; complex signatures and code styles may not be perfectly handled.- Runtime tracing: collects type information from actual function executions. Requires Python 3.x and executable test code.
[!TIP] Release notes automation:
- Pushing a tag like
v0.1.0triggers a workflow that runs.github/scripts/generate.shand uploadsrelease_<tag>_changes.mdas an artifact.- Use
./scripts/test.shto preview what a release would look like- Use
./scripts/bump.sh patchto create a new patch release
[!IMPORTANT] Core features status:
- Type checking: Basic parsing and diagnostics implemented
- Fixing: Automatic type annotation insertion implemented
- Runtime tracing: Function call type collection implemented
- Advanced type inference: In development
- Multi-language support: Planned
[!TIP] Complete command suite for development and CI troubleshooting:
# Basic development workflow cargo check # Quick compile check cargo test # Run all tests cargo clippy --all-targets --all-features -- -D warnings # Lint with warnings as errors cargo fmt -- --check # Check formatting # CI-specific checks (matches GitHub Actions) cargo clippy -- -D warnings # Clippy check (CI format) cargo +nightly udeps --all-targets # Check for unused dependencies cargo audit # Security audit # Fix common CI issues cargo fmt # Auto-format code cargo clippy --fix --all-targets --all-features # Auto-fix clippy issues # Install required tools for full CI compatibility rustup install nightly # Required for cargo-udeps cargo install cargo-udeps # For unused dependency checking cargo install cargo-audit # For security auditing # Git workflow after fixes git add . git commit -m "fix: resolve clippy lints and remove unused dependencies" git push origin mainCommon CI failure fixes:
- Clippy errors: Run
cargo clippy --fix --all-targets --all-featuresthen commit changes- Unused dependencies: Run
cargo +nightly udeps --all-targets, remove unused deps fromCargo.toml- Format issues: Run
cargo fmtthen commit changes- Security vulnerabilities: Run
cargo auditand update vulnerable dependencies- clippy.toml issues: Ensure no duplicate keys and use threshold-based config (see
clippy.toml)Clippy configuration notes:
- Use
*-thresholdsettings instead of allow/deny lists inclippy.toml- Common thresholds:
cognitive-complexity-threshold = 15,too-many-arguments-threshold = 7- For recursive functions, add
#[allow(clippy::only_used_in_recursion)]attribute
A hybrid type checker for Python and other dynamic languages.
— @omnitype by harper