No project description provided
Project description
Hildie
A Python monorepo built with Bazel, named after the best dog.
About
Hildie is a collection of Python utilities and tools, packaged as a single installable module. This project demonstrates a modern Python monorepo structure using Bazel for builds, testing, and publishing.
Why "Hildie"? Because all the good package names were taken, so this project is named after Hildie — the adorable pup you see above, peacefully napping with her favorite stuffed horse.
Installation
# Install main hildie package
pip install hildie
# Install hildie with optional Python bindings (Rust, Go, C++)
pip install hildie[bindings]
Features
- Modular Design: Multiple sub-packages under a single namespace
- Multi-Language: Rust, Go, Node.js, Java, and C++ implementations
- Python Bindings: Use Rust, Go, and C++ directly from Python via PyO3 and ctypes
- IPython/Jupyter Support: Full support for interactive environments
- Bazel Build System: Fast, reproducible builds with caching
- Automated Publishing: Tag a release and it's automatically published to PyPI, npm, Maven, crates.io
- Fully Tested: Comprehensive test coverage across all packages and languages
Packages
Python Packages
| Package | Description |
|---|---|
hildie.hildie_library |
Core utility functions for math operations |
hildie.hildie_app |
Application components for data processing |
hildie.hildie_cli |
Command-line interface tools |
hildie.hildie_archive_git_forks |
Utility for archiving GitHub forks |
hildie_bindings |
Python bindings for Rust, Go, and C++ (optional) |
Other Languages
| Language | Package | Registry |
|---|---|---|
| Java | hildie-java-lib | Maven Central |
| Go | hildie-go | pkg.go.dev |
| Rust | hildie-* | crates.io |
| JavaScript | @hildie/* | npm |
| C++ | hildie-cpp | (native library) |
Quick Start
Basic Usage
from hildie.hildie_library import add, multiply
# Simple math operations
result = add(2, 3) # Returns: 5
product = multiply(4, 5) # Returns: 20
Using the App
from hildie.hildie_app import App
app = App()
result = app.process_numbers([1, 2, 3, 4, 5])
print(result) # {'sum': 15, 'product': 120}
CLI Tools
# After installing hildie
python -m hildie.hildie_cli --help
GitHub Fork Archiver
from hildie.hildie_archive_git_forks.archiver import GitHubForkArchiver
archiver = GitHubForkArchiver(token="your-github-token")
archiver.archive_forks("username")
Python Bindings (Multi-Language)
With the hildie[bindings] extra, use Rust, Go, and C++ from Python:
from hildie_bindings import (
greet_rust, add_rust, # Rust bindings (PyO3)
greet_go, add_go, # Go bindings (ctypes)
process_data, compute_factorial # C++ bindings (ctypes)
)
# Use Rust functions
print(greet_rust("Hildie")) # "Hello, Hildie!"
print(add_rust(5, 10)) # 15
# Use Go functions
print(greet_go("Gophers")) # "Hello, Gophers!"
print(add_go(100, 200)) # 300
# Use C++ functions
print(process_data([1, 2, 3, 4, 5])) # [2, 4, 6, 8, 10]
print(compute_factorial(5)) # 120
In IPython/Jupyter
Bindings work seamlessly in interactive environments:
# In IPython or Jupyter - just import and use!
from hildie_bindings import greet_rust, add_rust
# Results displayed immediately
greet_rust("World")
add_rust(42, 8)
See Interactive Demo for a complete Jupyter notebook.
API Reference
hildie.hildie_library
| Function | Description |
|---|---|
add(a, b) |
Add two numbers together |
multiply(a, b) |
Multiply two numbers |
hildie.hildie_app
| Class | Description |
|---|---|
App |
Main application class for processing data |
hildie.hildie_archive_git_forks
| Class | Description |
|---|---|
GitHubForkArchiver |
Archive GitHub forks to local storage |
Development
Prerequisites
- Bazelisk (recommended) or Bazel 7+
- Python 3.11+
Building
# Build all targets
bazel build //...
# Build the wheel
bazel build //:wheel
Testing
# Run all tests
bazel test //...
Running CLIs
bazel run //:hildie-cli
bazel run //:hildie-archive-git-forks
Project Structure
hildie/
├── source/
│ ├── hildie/ # Multi-language source code
│ │ ├── java/ # Java packages (Maven Central)
│ │ ├── go/ # Go packages (pkg.go.dev)
│ │ ├── rust/ # Rust crates (crates.io)
│ │ ├── node/ # JavaScript/npm packages
│ │ ├── bindings/ # Python bindings
│ │ │ └── python/ # PyO3 + ctypes bindings
│ │ │ ├── hildie_bindings/ # Package source
│ │ │ ├── examples/ # Demo scripts & notebooks
│ │ │ └── tests/ # Binding tests
│ │ └── cpp/ # C++ components
│ └── python/ # Python build tools
│ ├── build_bindings.py
│ ├── regenerate_requirements.py
│ ├── test_runners.py
│ └── hildie.bzl
├── docs/ # Documentation
│ ├── *.md # All documentation files
│ ├── pyproject.toml
│ └── BUILD.bazel
├── packages/ # Python package tests
│ ├── my-library/
│ ├── my-app/
│ ├── my-cli/
│ └── archive-git-forks/
├── BUILD.bazel # Root build file
├── MODULE.bazel # Bazel dependencies
├── pyproject.toml # Project metadata
└── README.md # This file
Publishing
Releases are automated via GitHub Actions. To publish a new version:
git tag v0.2.0
git push origin v0.2.0
The workflow will:
- Run all tests
- Build the wheel with the tagged version
- Publish to PyPI
- Create a GitHub release
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run tests (
bazel test //...) - Commit your changes
- Push to the branch
- Open a Pull Request
Maintainer
Clinton Steiner — clintonsteiner@gmail.com
- GitHub: @clintonsteiner
License
This project is licensed under the MIT License — see the LICENSE file for details.
Made by Clinton, inspired by Hildie
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hildie-0.3.0-py3-none-any.whl.
File metadata
- Download URL: hildie-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5c19820a20388aa6719434adebfe1ce79d14bfb4713a86d5d8f9a2cf2a38e8c
|
|
| MD5 |
57ee68a3c7c56fe42a3d918bb9142d1f
|
|
| BLAKE2b-256 |
b4032d34c6f2216d297abebdabf5ed5fbebfee9ab9c238953d90112021bfdc1a
|
Provenance
The following attestation bundles were made for hildie-0.3.0-py3-none-any.whl:
Publisher:
bazel.yml on clintonsteiner/hildies-python-monorepo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hildie-0.3.0-py3-none-any.whl -
Subject digest:
d5c19820a20388aa6719434adebfe1ce79d14bfb4713a86d5d8f9a2cf2a38e8c - Sigstore transparency entry: 947232730
- Sigstore integration time:
-
Permalink:
clintonsteiner/hildies-python-monorepo@c63d29881b70acaf6f7ece3fdeee250d775a6e09 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/clintonsteiner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
bazel.yml@c63d29881b70acaf6f7ece3fdeee250d775a6e09 -
Trigger Event:
push
-
Statement type: