semvec/pypi-packages huggingface dataset:
hexdoc-slate-work 1.2.2.1.0
hexdoc plugin for Slate Work's web book.
Requires Python: >=3.11
Keywords: hexdoc

# hexdoc-slate-work

<a href="https://github.com/hexdoc-dev/hexdoc"><img src="https://img.shields.io/endpoint?url=https://hexxy.media/api/v0/badge/hexdoc?label=1" alt="powered by hexdoc" style="max-width:100%;"></a>

[hexdoc](https://pypi.org/project/hexdoc) plugin for Slate Work's web book.

## Version scheme

We use [hatch-gradle-version](https://pypi.org/project/hatch-gradle-version) to generate the version number based on whichever mod version the docgen was built with.

The version is in this format: `mod-version.python-version.mod-pre.python-dev.python-post`

For example:
* Mod version: `0.11.1-7`
* Python package version: `1.0.dev0`
* Full version: `0.11.1.1.0rc7.dev0`

## Setup

Install Python 3.11 and Node 18 (20+ is **not** currently supported).

```sh
python3.11 -m venv venv

.\venv\Scripts\activate   # Windows
. venv/bin/activate.fish  # fish
source venv/bin/activate  # everything else

# run from the repo root, not doc/
pip install -e .[dev]
```

## Usage

For local testing, create a file called `.env` in the repo root following this template:
```sh
GITHUB_REPOSITORY=Stick404/SlateWork
GITHUB_SHA=main
GITHUB_PAGES_URL=https://stick404.github.io/SlateWork/
```

Useful commands:
```sh
# show help
hexdoc -h

# build, merge, and serve the web book in watch mode
nodemon --config doc/nodemon.json

# build, merge, and serve the web book
hexdoc serve

# build and merge the web book
hexdoc build
hexdoc merge

# start a Python interpreter with some extra local variables
hexdoc repl
```
unitpackage 0.12.0
a Python library to interact with a collection of frictionless datapackages
Requires Python: >=3.10

[![Binder](https://static.mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/echemdb/unitpackage/0.12.0?labpath=tree%2Fdoc%2Findex.md)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15644101.svg)](https://zenodo.org/records/15644101)

# unitpackage

A Python library to create, interact with, and store collections of [frictionless Data Packages](https://frictionlessdata.io/) whose tabular resources carry **unit-aware field metadata**. Each data package pairs a CSV file with a JSON descriptor containing schema information (column names, types, units) and arbitrary nested metadata.

## Key features

- **Unit-aware fields** — columns carry unit metadata (e.g. `V`, `A / m2`, `s`) and can be rescaled to compatible units.
- **Collections** — load, filter, slice, and iterate over sets of data packages from local directories or remote sources.
- **Metadata access** — nested metadata is accessible via attribute-style or dict-style access.
- **Plotting** — built-in 2D plotting with plotly.
- **Domain extensions** — subclass `Collection` and `Entry` for domain-specific features (e.g. electrochemistry via `Echemdb`).

## Quick example

```python
>>> from unitpackage.collection import Collection
>>> db = Collection.from_local('./doc/files')
>>> entry = db['demo_package_cv']
>>> entry.echemdb.description
'Sample data for the unitpackage module'
```

Access field units and rescale data:

```python
>>> entry.field_unit('j')
'A / m2'
>>> entry.rescale({'E' : 'mV', 'j' : 'uA / m2'}).df
          t           E             j
0  0.000000 -196.961730  43008.842162
1  0.011368 -196.393321  51408.199892
...
```

Plot directly from an entry:

```python
>>> entry.plot()
```

<img src=https://raw.githubusercontent.com/echemdb/unitpackage/main/doc/images/readme_demo_plot.png style="width:400px">

Rescale an entire collection at once:

```python
>>> rescaled = db.rescale({'E': 'mV', 'j': 'uA / m2'})
>>> rescaled[0].field_unit('E')
'mV'
```

Detailed usage examples, including local collection creation and metadata handling, are provided in the [documentation](https://echemdb.github.io/unitpackage/).

# Installation

This package is available on [PyPI](https://pypi.org/project/unitpackage/) and can be installed with pip:

```sh .noeval
pip install unitpackage
```

The package is also available on [conda-forge](https://github.com/conda-forge/unitpackage-feedstock) and can be installed with conda

```sh .noeval
conda install -c conda-forge unitpackage
```

Please consult our [documentation](https://echemdb.github.io/unitpackage/) for
more detailed [installation instructions](https://echemdb.github.io/unitpackage/installation.html).

# License

The contents of this repository are licensed under the [GNU General Public
License v3.0](./LICENSE) or, at your option, any later version.
fatoora-rs 0.1.3
Python bindings for the fatoora-rs library, providing ZATCA-compliant e-invoicing functionality.
Requires Python: >=3.9
Keywords: zatca, invoice, e-invoicing, sdk, ffi

## fatoora Python bindings

This package wraps the `fatoora-ffi` shared library via `cffi`.

### Development (uv)

```bash
uv venv
uv pip install -e .
```

### Build a wheel (uv)

```bash
uv build --wheel
```

### Wheels (CI)

- GitHub Actions uses `cibuildwheel` to produce platform wheels in `dist/` (wheel-only publishing).
- See `.github/workflows/python.yml` for the build matrix.

### Notes

- The build step compiles `fatoora-ffi` with `cargo build -p fatoora-ffi --release`.
- The shared library is bundled into the Python package.
- ZATCA API responses are exposed via opaque handles with getters (no JSON payloads).
- Errors are raised as typed exceptions mapped from FFI error codes (see `FfiErrorKind`).
- For local dev without install, set `FATOORA_FFI_PATH` or build and use the repo `target/` output.
- If a `fatoora_ffi.h` header is present (from `FATOORA_CBINDGEN=1 cargo build -p fatoora-ffi`),
  the Python wrapper will load its declarations automatically. You can override the header with
  `FATOORA_FFI_HEADER=/path/to/fatoora_ffi.h`.

### Examples

```bash
python examples/load_lib.py
python examples/invoice_basic.py
python examples/invoice_parse.py
```

### Tests

```bash
uv pip install -e .[dev]
uv run pytest tests
```

### High-level API

```python
from fatoora import InvoiceBuilder, InvoiceSubType, InvoiceTypeKind, VatCategory

builder = InvoiceBuilder.new(
    invoice_type=InvoiceTypeKind.TAX,
    invoice_subtype=InvoiceSubType.SIMPLIFIED,
)
builder.set_id("INV-1")
builder.set_uuid("123e4567-e89b-12d3-a456-426614174000")
builder.set_issue_datetime("2024-01-01T12:30:00Z")
builder.set_currency("SAR")
builder.set_previous_invoice_hash("hash")
builder.set_invoice_counter(1)
builder.set_payment_means_code("10")
builder.set_vat_category(VatCategory.STANDARD)
builder.set_seller(
    name="Acme Inc",
    country_code="SAU",
    city="Riyadh",
    street="King Fahd",
    building_number="1234",
    postal_code="12222",
    vat_id="399999999900003",
)
builder.add_line_item(
    description="Item",
    quantity=1.0,
    unit_code="PCE",
    unit_price=100.0,
    vat_rate=15.0,
    vat_category=VatCategory.STANDARD,
)
invoice = builder.build()
print(invoice.xml())
```

`set_issue_datetime` expects a ZATCA ISO UTC timestamp string (`YYYY-MM-DDTHH:MM:SSZ`).