# Nhandu
> *Nhandu* (/ɲãndu/, approximately "NYAN-doo") means "spider" in many Tupi-Guarani languages, a fitting name for a tool that weaves together code and documentation, much like Knuth's original vision of literate programming.
**Literate programming for Python: Write executable documents in plain `.py` files.**
Nhandu transforms ordinary Python files with markdown comments into beautiful, reproducible reports. It's lighter than Jupyter, simpler than Quarto, and perfectly git-friendly.
## Why Nhandu?
Contemporary literate programming in Python faces a documentation dilemma:
- **Jupyter notebooks** are powerful but use JSON format (git diffs are messy), require a browser/server, and mix code with metadata
- **Quarto** is feature-rich but complex, with many configuration options and a learning curve
- **Pweave** has not been maintained for many years and is incompatible with currently supported Python versions.
- **Traditional scripts** lack integrated documentation and visualization
Nhandu offers a different solution:
- Write literate programs in **normal `.py` files**: no special format, just comments
- **Perfect git diffs**: plain text, not JSON, no timestamps, no hashes
- **No server or browser** required—just run the command
- **Zero configuration needed**: smart defaults get you started immediately
- **Python-native**: designed specifically for the Python ecosystem
## Quick Start
### Your First Literate Program
Create a file `analysis.py`:
```python
#' # My First Analysis
#'
#' This is a literate Python program. Lines starting with `#'` are markdown.
#' Everything else is regular Python code.
import numpy as np
# Generate some data
data = np.random.normal(0, 1, 1000)
#' ## Results
#'
#' Let's compute some statistics:
print(f"Mean: {data.mean():.3f}")
print(f"Std Dev: {data.std():.3f}")
#' The data looks normally distributed, as expected.
```
### Generate Your Report
```bash
nhandu analysis.py
```
This creates `analysis.out.py` (markdown format) with your code, output, and documentation.
For HTML output:
```bash
nhandu analysis.py --format html # Creates analysis.html
```
## Features
### Smart Output Capture
Nhandu automatically captures:
- **Print statements** and stdout
- **Matplotlib plots** (no `plt.show()` needed!)
- **Expression results** (like Jupyter cells)
- **Rich objects** (DataFrames render as tables in HTML)
### Syntax Highlighting
Server-side syntax highlighting with 50+ themes via Pygments. Popular themes include: `github-dark` (default), `monokai`, `dracula`, `one-dark`, `vs`, and `solarized-light`.
### Multiple Output Formats
Markdown output can be converted to PDF, Word, LaTeX, and more using [pandoc](https://pandoc.org/) or similar tools. Native HTML support is implemented out-of-the-box.
### Configuration (Optional)
Power users can customize their reports via YAML frontmatter:
```python
#' ---
#' title: My Scientific Report
#' output: html
#' code_theme: dracula
#' plot_dpi: 150
#' ---
#'
#' # Introduction
#' ...
```
It is also possible to use a configuration file (`nhandu.yaml`) or CLI arguments.
## How It Works
### The Python Literate Format
Nhandu uses a simple convention: lines starting with `#'` are markdown, everything else is Python code:
```python
#' # This is a markdown heading
#'
#' Any line starting with #' is treated as **markdown**.
#' You can use all standard markdown features.
# This is a regular Python comment
x = 42 # Regular code continues to work normally
#' Back to documentation. Variables persist across blocks:
print(f"x = {x}")
```
**Hidden code blocks** let you run setup code without cluttering your report:
```python
#| hide
import pandas as pd
import matplotlib.pyplot as plt
# Configuration code here—runs but doesn't appear in output
#|
#' Now let's analyze our data:
# This code WILL appear in the output
data = pd.read_csv("data.csv")
```
### Execution Model
- **Shared namespace**: All code blocks share the same Python environment
- **Sequential execution**: Blocks run in document order
- **Output capture**: stdout, plots, and expression results are all captured
- **Rich formatting**: Automatic handling of matplotlib figures, pandas DataFrames, and more
### Inline Code Evaluation
You can embed Python expressions directly within markdown text using inline code syntax:
- **`<%= expression %>`** - Evaluates the expression and displays the result
- **`<% statement %>`** - Executes code without displaying output
Example:
```python
#' # Sales Report
#'
#' <% import datetime %>
#' Report generated on <%= datetime.date.today() %>.
total_sales = 45000
target = 50000
#' We achieved <%= total_sales %> in sales.
#' That's <%= (total_sales/target)*100 %>% of our target.
#'
#' <% status = "on track" if total_sales >= target * 0.9 else "behind" %>
#' Status: We are <%= status %>.
```
Inline code shares the same namespace as regular code blocks, so you can reference variables, import modules, and perform calculations seamlessly within your documentation.
## Examples
Check out the [`docs/`](https://github.com/tresoldi/nhandu/tree/main/docs/) directory for complete demonstrations:
- **[01_hello_world.py](https://github.com/tresoldi/nhandu/tree/main/docs/01_hello_world.py)** - Basic syntax and concepts [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/01_hello_world.py.html)]
- **[02_data_analysis.py](https://github.com/tresoldi/nhandu/tree/main/docs/02_data_analysis.py)** - Working with data using standard library [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/02_data_analysis.py.html)]
- **[03_plotting.py](https://github.com/tresoldi/nhandu/tree/main/docs/03_plotting.py)** - Creating visualizations with matplotlib [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/03_plotting.py.html)]
- **[04_scientific_computation.py](https://github.com/tresoldi/nhandu/tree/main/docs/04_scientific_computation.py)** - Numerical computing with NumPy [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/04_scientific_computation.py.html)]
- **[05_advanced_report.py](https://github.com/tresoldi/nhandu/tree/main/docs/05_advanced_report.py)** - Complex report with pandas and multiple visualizations [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/05_advanced_report.py.html)]
- **[06_inline_code.py](https://github.com/tresoldi/nhandu/tree/main/docs/06_inline_code.py)** - Inline code evaluation with `<%= %>` syntax [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/06_inline_code.py.html)]
## Installation & Usage
### Install from PyPI
```bash
pip install nhandu
```
### Install from Source
```bash
git clone https://github.com/tresoldi/nhandu.git
cd nhandu
pip install -e .
```
### Basic Usage
```bash
nhandu document.py # Process → document.out.py (markdown)
nhandu document.py --format html # Process → document.html
nhandu document.py -o report.html # Specify output file
nhandu document.py --format md # Output as markdown (default)
nhandu document.py --code-theme monokai # Custom syntax theme
nhandu document.py --verbose # Show processing details
```
### Jupyter Notebook Integration
Nhandu can import Jupyter notebooks (`.ipynb`) and export to them, bridging the gap between notebook-based and literate programming workflows:
**Import from Jupyter** (convert `.ipynb` → `.py`):
```bash
nhandu import-notebook notebook.ipynb -o document.py
```
This converts a Jupyter notebook to Nhandu's literate Python format:
- Markdown cells → `#'` markdown comments
- Code cells → Regular Python code
- Hidden cells (with `hide` tag) → `#| hide` blocks
- Notebook metadata → YAML frontmatter
- **Outputs are discarded** (can be regenerated by running the document)
**Export to Jupyter** (convert `.py` → `.ipynb`):
```bash
nhandu export-notebook document.py -o notebook.ipynb
```
This creates a Jupyter notebook from your literate Python file:
- `#'` comments → Markdown cells
- Regular code → Code cells
- `#| hide` blocks → Code cells with `hide` tag
- YAML frontmatter → Notebook metadata
- **No outputs by default** (symmetric with import; open in Jupyter to run cells)
**Optional: Execute notebook after export**:
```bash
nhandu export-notebook document.py -o notebook.ipynb --execute
```
**Installation note**: Jupyter conversion requires the optional `jupyter` dependency:
```bash
pip install nhandu[jupyter]
```
**Round-trip compatibility**: Import and export use best-effort preservation of structure and metadata. While not perfectly lossless, they maintain document integrity for practical workflows.
### CLI Options
**Main command (process documents)**:
```
nhandu [OPTIONS] INPUT
Options:
-o, --output PATH Output file path
--format {html,md} Output format (default: html)
--config PATH Configuration file (YAML)
--working-dir PATH Working directory for code execution
--timeout SECONDS Execution timeout
--code-theme THEME Syntax highlighting theme
--verbose, -v Enable verbose output
--version Show version
--help Show help message
```
**Jupyter notebook commands**:
```
nhandu import-notebook INPUT -o OUTPUT [OPTIONS]
Import Jupyter notebook to Nhandu format
Options:
-o, --output PATH Output Python file (required)
--verbose, -v Enable verbose output
nhandu export-notebook INPUT -o OUTPUT [OPTIONS]
Export Nhandu document to Jupyter notebook
Options:
-o, --output PATH Output notebook file (required)
--execute Execute notebook after creation
--kernel KERNEL Kernel name (default: python3)
--verbose, -v Enable verbose output
```
### Roadmap
Current priorities for future releases:
- [ ] Native PDF output support
- [ ] Custom HTML templates (Jinja2)
- [ ] Watch mode for live development
- [ ] Rich display for more object types (NumPy arrays, scikit-learn models)
- [ ] Caching system for faster re-renders
See [ROADMAP_v0.2.0.md](ROADMAP_v0.2.0.md) for detailed feature planning and [issues](https://github.com/tresoldi/nhandu/issues) to suggest features.
## Project Information
### Citation and Acknowledgements
If you use Nhandu in your research, please cite:
```bibtex
@software{tresoldi2025nhandu,
author = {Tresoldi, Tiago},
title = {Nhandu: Literate Programming for Python},
year = {2025},
publisher = {Department of Linguistics and Philology, Uppsala University},
address = {Uppsala, Sweden},
url = {https://github.com/tresoldi/nhandu},
orcid = {0000-0002-2863-1467}
}
```
The earliest stages of development took place within the context of
the [Cultural Evolution of Texts](https://github.com/evotext/) project, with funding from the
[Riksbankens Jubileumsfond](https://www.rj.se/) (grant agreement ID:
[MXM19-1087:1](https://www.rj.se/en/anslag/2019/cultural-evolution-of-texts/)).
### License
MIT License - see [LICENSE](LICENSE) file for details.
### Acknowledgments
Nhandu is inspired by:
- Donald Knuth's original [literate programming](https://en.wikipedia.org/wiki/Literate_programming) vision
- [knitr](https://yihui.org/knitr/) and R Markdown's approach to reproducible research
- [Jupyter](https://jupyter.org/)'s interactive computing paradigm
- [Quarto](https://quarto.org/)'s modern scientific publishing tools
- [Pweave](http://mpastell.com/pweave/)'s Python implementation (though no longer maintained)
Special thanks to the scientific Python community for building the ecosystem that makes tools like this possible.
Raw data
{
"_id": null,
"home_page": null,
"name": "nhandu",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "literate-programming, scientific-computing, reports, documentation",
"author": null,
"author_email": "Tiago Tresoldi <tiago.tresoldi@lingfil.uu.se>",
"download_url": "https://files.pythonhosted.org/packages/2c/a8/8d126e590de4af3be79e5d10686391e6c9ae025bf405570ba19e8657d371/nhandu-0.3.0.tar.gz",
"platform": null,
"description": "\n# Nhandu \n\n> *Nhandu* (/\u0272\u00e3ndu/, approximately \"NYAN-doo\") means \"spider\" in many Tupi-Guarani languages, a fitting name for a tool that weaves together code and documentation, much like Knuth's original vision of literate programming.\n\n**Literate programming for Python: Write executable documents in plain `.py` files.**\n\nNhandu transforms ordinary Python files with markdown comments into beautiful, reproducible reports. It's lighter than Jupyter, simpler than Quarto, and perfectly git-friendly.\n\n## Why Nhandu?\n\nContemporary literate programming in Python faces a documentation dilemma:\n\n- **Jupyter notebooks** are powerful but use JSON format (git diffs are messy), require a browser/server, and mix code with metadata\n- **Quarto** is feature-rich but complex, with many configuration options and a learning curve\n- **Pweave** has not been maintained for many years and is incompatible with currently supported Python versions.\n- **Traditional scripts** lack integrated documentation and visualization\n\nNhandu offers a different solution:\n\n- Write literate programs in **normal `.py` files**: no special format, just comments\n- **Perfect git diffs**: plain text, not JSON, no timestamps, no hashes\n- **No server or browser** required\u2014just run the command\n- **Zero configuration needed**: smart defaults get you started immediately\n- **Python-native**: designed specifically for the Python ecosystem\n\n## Quick Start\n\n### Your First Literate Program\n\nCreate a file `analysis.py`:\n\n```python\n#' # My First Analysis\n#'\n#' This is a literate Python program. Lines starting with `#'` are markdown.\n#' Everything else is regular Python code.\n\nimport numpy as np\n\n# Generate some data\ndata = np.random.normal(0, 1, 1000)\n\n#' ## Results\n#'\n#' Let's compute some statistics:\n\nprint(f\"Mean: {data.mean():.3f}\")\nprint(f\"Std Dev: {data.std():.3f}\")\n\n#' The data looks normally distributed, as expected.\n```\n\n### Generate Your Report\n\n```bash\nnhandu analysis.py\n```\n\nThis creates `analysis.out.py` (markdown format) with your code, output, and documentation.\n\nFor HTML output:\n```bash\nnhandu analysis.py --format html # Creates analysis.html\n```\n\n## Features\n\n### Smart Output Capture\n\nNhandu automatically captures:\n\n- **Print statements** and stdout\n- **Matplotlib plots** (no `plt.show()` needed!)\n- **Expression results** (like Jupyter cells)\n- **Rich objects** (DataFrames render as tables in HTML)\n\n### Syntax Highlighting\n\nServer-side syntax highlighting with 50+ themes via Pygments. Popular themes include: `github-dark` (default), `monokai`, `dracula`, `one-dark`, `vs`, and `solarized-light`.\n\n### Multiple Output Formats\n\nMarkdown output can be converted to PDF, Word, LaTeX, and more using [pandoc](https://pandoc.org/) or similar tools. Native HTML support is implemented out-of-the-box.\n\n### Configuration (Optional)\n\nPower users can customize their reports via YAML frontmatter:\n\n```python\n#' ---\n#' title: My Scientific Report\n#' output: html\n#' code_theme: dracula\n#' plot_dpi: 150\n#' ---\n#'\n#' # Introduction\n#' ...\n```\n\nIt is also possible to use a configuration file (`nhandu.yaml`) or CLI arguments.\n\n## How It Works\n\n### The Python Literate Format\n\nNhandu uses a simple convention: lines starting with `#'` are markdown, everything else is Python code:\n\n```python\n#' # This is a markdown heading\n#'\n#' Any line starting with #' is treated as **markdown**.\n#' You can use all standard markdown features.\n\n# This is a regular Python comment\nx = 42 # Regular code continues to work normally\n\n#' Back to documentation. Variables persist across blocks:\n\nprint(f\"x = {x}\")\n```\n\n**Hidden code blocks** let you run setup code without cluttering your report:\n\n```python\n#| hide\nimport pandas as pd\nimport matplotlib.pyplot as plt\n# Configuration code here\u2014runs but doesn't appear in output\n#|\n\n#' Now let's analyze our data:\n# This code WILL appear in the output\ndata = pd.read_csv(\"data.csv\")\n```\n\n### Execution Model\n\n- **Shared namespace**: All code blocks share the same Python environment\n- **Sequential execution**: Blocks run in document order\n- **Output capture**: stdout, plots, and expression results are all captured\n- **Rich formatting**: Automatic handling of matplotlib figures, pandas DataFrames, and more\n\n### Inline Code Evaluation\n\nYou can embed Python expressions directly within markdown text using inline code syntax:\n\n- **`<%= expression %>`** - Evaluates the expression and displays the result\n- **`<% statement %>`** - Executes code without displaying output\n\nExample:\n\n```python\n#' # Sales Report\n#'\n#' <% import datetime %>\n#' Report generated on <%= datetime.date.today() %>.\n\ntotal_sales = 45000\ntarget = 50000\n\n#' We achieved <%= total_sales %> in sales.\n#' That's <%= (total_sales/target)*100 %>% of our target.\n#'\n#' <% status = \"on track\" if total_sales >= target * 0.9 else \"behind\" %>\n#' Status: We are <%= status %>.\n```\n\nInline code shares the same namespace as regular code blocks, so you can reference variables, import modules, and perform calculations seamlessly within your documentation.\n\n## Examples\n\nCheck out the [`docs/`](https://github.com/tresoldi/nhandu/tree/main/docs/) directory for complete demonstrations:\n\n- **[01_hello_world.py](https://github.com/tresoldi/nhandu/tree/main/docs/01_hello_world.py)** - Basic syntax and concepts [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/01_hello_world.py.html)]\n- **[02_data_analysis.py](https://github.com/tresoldi/nhandu/tree/main/docs/02_data_analysis.py)** - Working with data using standard library [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/02_data_analysis.py.html)]\n- **[03_plotting.py](https://github.com/tresoldi/nhandu/tree/main/docs/03_plotting.py)** - Creating visualizations with matplotlib [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/03_plotting.py.html)]\n- **[04_scientific_computation.py](https://github.com/tresoldi/nhandu/tree/main/docs/04_scientific_computation.py)** - Numerical computing with NumPy [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/04_scientific_computation.py.html)]\n- **[05_advanced_report.py](https://github.com/tresoldi/nhandu/tree/main/docs/05_advanced_report.py)** - Complex report with pandas and multiple visualizations [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/05_advanced_report.py.html)]\n- **[06_inline_code.py](https://github.com/tresoldi/nhandu/tree/main/docs/06_inline_code.py)** - Inline code evaluation with `<%= %>` syntax [[OUTPUT](https://htmlpreview.github.io/?https://github.com/tresoldi/nhandu/blob/main/docs/06_inline_code.py.html)]\n\n## Installation & Usage\n\n### Install from PyPI\n\n```bash\npip install nhandu\n```\n\n### Install from Source\n\n```bash\ngit clone https://github.com/tresoldi/nhandu.git\ncd nhandu\npip install -e .\n```\n\n### Basic Usage\n\n```bash\nnhandu document.py # Process \u2192 document.out.py (markdown)\nnhandu document.py --format html # Process \u2192 document.html\nnhandu document.py -o report.html # Specify output file\nnhandu document.py --format md # Output as markdown (default)\nnhandu document.py --code-theme monokai # Custom syntax theme\nnhandu document.py --verbose # Show processing details\n```\n\n### Jupyter Notebook Integration\n\nNhandu can import Jupyter notebooks (`.ipynb`) and export to them, bridging the gap between notebook-based and literate programming workflows:\n\n**Import from Jupyter** (convert `.ipynb` \u2192 `.py`):\n\n```bash\nnhandu import-notebook notebook.ipynb -o document.py\n```\n\nThis converts a Jupyter notebook to Nhandu's literate Python format:\n- Markdown cells \u2192 `#'` markdown comments\n- Code cells \u2192 Regular Python code\n- Hidden cells (with `hide` tag) \u2192 `#| hide` blocks\n- Notebook metadata \u2192 YAML frontmatter\n- **Outputs are discarded** (can be regenerated by running the document)\n\n**Export to Jupyter** (convert `.py` \u2192 `.ipynb`):\n\n```bash\nnhandu export-notebook document.py -o notebook.ipynb\n```\n\nThis creates a Jupyter notebook from your literate Python file:\n- `#'` comments \u2192 Markdown cells\n- Regular code \u2192 Code cells\n- `#| hide` blocks \u2192 Code cells with `hide` tag\n- YAML frontmatter \u2192 Notebook metadata\n- **No outputs by default** (symmetric with import; open in Jupyter to run cells)\n\n**Optional: Execute notebook after export**:\n\n```bash\nnhandu export-notebook document.py -o notebook.ipynb --execute\n```\n\n**Installation note**: Jupyter conversion requires the optional `jupyter` dependency:\n\n```bash\npip install nhandu[jupyter]\n```\n\n**Round-trip compatibility**: Import and export use best-effort preservation of structure and metadata. While not perfectly lossless, they maintain document integrity for practical workflows.\n\n### CLI Options\n\n**Main command (process documents)**:\n\n```\nnhandu [OPTIONS] INPUT\n\nOptions:\n -o, --output PATH Output file path\n --format {html,md} Output format (default: html)\n --config PATH Configuration file (YAML)\n --working-dir PATH Working directory for code execution\n --timeout SECONDS Execution timeout\n --code-theme THEME Syntax highlighting theme\n --verbose, -v Enable verbose output\n --version Show version\n --help Show help message\n```\n\n**Jupyter notebook commands**:\n\n```\nnhandu import-notebook INPUT -o OUTPUT [OPTIONS]\n\n Import Jupyter notebook to Nhandu format\n\nOptions:\n -o, --output PATH Output Python file (required)\n --verbose, -v Enable verbose output\n\nnhandu export-notebook INPUT -o OUTPUT [OPTIONS]\n\n Export Nhandu document to Jupyter notebook\n\nOptions:\n -o, --output PATH Output notebook file (required)\n --execute Execute notebook after creation\n --kernel KERNEL Kernel name (default: python3)\n --verbose, -v Enable verbose output\n```\n\n### Roadmap\n\nCurrent priorities for future releases:\n\n- [ ] Native PDF output support\n- [ ] Custom HTML templates (Jinja2)\n- [ ] Watch mode for live development\n- [ ] Rich display for more object types (NumPy arrays, scikit-learn models)\n- [ ] Caching system for faster re-renders\n\nSee [ROADMAP_v0.2.0.md](ROADMAP_v0.2.0.md) for detailed feature planning and [issues](https://github.com/tresoldi/nhandu/issues) to suggest features.\n\n## Project Information\n\n### Citation and Acknowledgements\n\nIf you use Nhandu in your research, please cite:\n\n```bibtex\n@software{tresoldi2025nhandu,\n author = {Tresoldi, Tiago},\n title = {Nhandu: Literate Programming for Python},\n year = {2025},\n publisher = {Department of Linguistics and Philology, Uppsala University},\n address = {Uppsala, Sweden},\n url = {https://github.com/tresoldi/nhandu},\n orcid = {0000-0002-2863-1467}\n}\n```\n\nThe earliest stages of development took place within the context of\nthe [Cultural Evolution of Texts](https://github.com/evotext/) project, with funding from the\n[Riksbankens Jubileumsfond](https://www.rj.se/) (grant agreement ID:\n[MXM19-1087:1](https://www.rj.se/en/anslag/2019/cultural-evolution-of-texts/)).\n\n### License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n### Acknowledgments\n\nNhandu is inspired by:\n- Donald Knuth's original [literate programming](https://en.wikipedia.org/wiki/Literate_programming) vision\n- [knitr](https://yihui.org/knitr/) and R Markdown's approach to reproducible research\n- [Jupyter](https://jupyter.org/)'s interactive computing paradigm\n- [Quarto](https://quarto.org/)'s modern scientific publishing tools\n- [Pweave](http://mpastell.com/pweave/)'s Python implementation (though no longer maintained)\n\nSpecial thanks to the scientific Python community for building the ecosystem that makes tools like this possible.\n",
"bugtrack_url": null,
"license": null,
"summary": "A literate programming tool for Python that weaves code and documentation into scientific reports",
"version": "0.3.0",
"project_urls": {
"Homepage": "https://github.com/tresoldi/nhandu",
"Issues": "https://github.com/tresoldi/nhandu/issues"
},
"split_keywords": [
"literate-programming",
" scientific-computing",
" reports",
" documentation"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a6bd6ba64f310f0a14539ea058704011e111be3e21e031fabe502fb865ba4f04",
"md5": "23ed0a90579e8b5467c0b532c0e146a4",
"sha256": "b4ae77ee32594ce259e978cf9db53f3d00e5ce8dfd2c01f99dd02193c4773395"
},
"downloads": -1,
"filename": "nhandu-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "23ed0a90579e8b5467c0b532c0e146a4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 25005,
"upload_time": "2025-10-28T06:19:50",
"upload_time_iso_8601": "2025-10-28T06:19:50.421487Z",
"url": "https://files.pythonhosted.org/packages/a6/bd/6ba64f310f0a14539ea058704011e111be3e21e031fabe502fb865ba4f04/nhandu-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2ca88d126e590de4af3be79e5d10686391e6c9ae025bf405570ba19e8657d371",
"md5": "10506d5713b16afa9f6ddd639fa01d9e",
"sha256": "7b7e289f26c12d1e75b1df2fd4e2f56c007ada461ff46ff7fe66a0817a43de50"
},
"downloads": -1,
"filename": "nhandu-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "10506d5713b16afa9f6ddd639fa01d9e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 42793,
"upload_time": "2025-10-28T06:19:51",
"upload_time_iso_8601": "2025-10-28T06:19:51.520098Z",
"url": "https://files.pythonhosted.org/packages/2c/a8/8d126e590de4af3be79e5d10686391e6c9ae025bf405570ba19e8657d371/nhandu-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-28 06:19:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tresoldi",
"github_project": "nhandu",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "nhandu"
}