semvec/pypi-packages huggingface dataset:
remarcableclient 1.0.0
Interacts with Remarcable's API to support inventory management
Requires Python: >=3.10

# remarcableclient

A Python connector for the Remarcable API, providing access to asset status, projects, users, tool requests, and more.

## Installation

```sh
pip install remarcableclient
```

## Build

```sh
uv build
```

The output `.whl` will be generated in `dist/`

## Requirements
- Python >= 3.10
- pandas >= 2.3.0
- requests >= 2.32.4

## Usage

```py
from remarcable_client import RemarcableClient, RemarcableConfig

config = RemarcableConfig(
    api_key="YOUR_API_KEY",  # or email="...", password="..."
)
client = RemarcableClient(config)

# Example: List all projects
projects = client.projects.list_projects()
print(projects)
```

## Resources
The client exposes the following resource modules:

- `client.assets` — Asset management (items, requests, transfers, charges, etc.)
- `client.orders` — Purchase and sales order management
- `client.invoices` — Invoice and invoice item management
- `client.price_files` — Price file and item management
- `client.projects` — Project and project category management
- `client.users` — User account management
- `client.vendors` — Vendor and supplier management

Each resource provides methods for listing, retrieving, creating, and updating records. See the docstrings in the source code for detailed parameter and return value documentation.
canonicalize-range 0.1.0a1
This Python module provides utilities for normalizing and canonicalizing range objects to ensure they contain complete steps from their start value.
Requires Python: >=2

# `canonicalize-range`

This Python module provides utilities for normalizing and canonicalizing range objects to ensure they contain complete steps from their start value.

## Functions

### `normalize_stop(start, stop, step)`

Normalizes the stop value of a range to make it a multiple of step from start.

**Parameters:**
- `start`: The starting value of the range (int)
- `stop`: The original stop value of the range (int)
- `step`: The step size between values (must be non-zero) (int)

**Returns:**
- A new stop value that ensures complete steps from the start (int)

**Raises:**
- `ValueError`: If step is 0

### `canonicalize_range(range_object)`

Creates a canonical version of a range object with adjusted stop value.

**Parameters:**
- `range_object`: The original range object to canonicalize (range)

**Returns:**
- A new range object with adjusted stop value (range)

## Examples

```python
from canonicalize_range import canonicalize_range


# Range may stop before completing the final step
# Canonicalized range completes the step pattern
r1 = range(0, 10, 3)  # Contains 0, 3, 6, 9
canonical_r1 = canonicalize_range(r1)  # Produces range(0, 12, 3), which also contains 0, 3, 6, 9
assert (canonical_r1.start, canonical_r1.stop, canonical_r1.step) == (0, 12, 3)
assert list(r1) == list(canonical_r1)

r2 = range(10, 0, -3)  # Contains 10, 7, 4, 1
canonical_r2 = canonicalize_range(r2)  # Produces range(10, -2, -3), which also contains 10, 7, 4, 1
assert (canonical_r2.start, canonical_r2.stop, canonical_r2.step) == (10, -2, -3)
assert list(r2) == list(canonical_r2)

# Range may be empty
# Canonicalized range makes that explicit with `start = stop`
r3 = range(10, 0, 3)  # Empty
canonical_r3 = canonicalize_range(r3)  # Produces range(10, 10, 3), which is also empty
assert (canonical_r3.start, canonical_r3.stop, canonical_r3.step) == (10, 10, 3)
assert list(r3) == list(canonical_r3)

r4 = range(0, 10, -3)  # Empty
canonical_r4 = canonicalize_range(r4)  # Produces range(0, 0, -3), which is also empty
assert (canonical_r4.start, canonical_r4.stop, canonical_r4.step) == (0, 0, -3)
assert list(r4) == list(canonical_r4)
```

## Installation

```bash
pip install canonicalize-range
```

## Contributing

Contributions are welcome! Please submit pull requests or open issues on the GitHub repository.

## License

This project is licensed under the [MIT License](LICENSE).
deepset 1.1.0
Recursive subset comparison for complex nested Python data structures
Requires Python: >=3.6
Keywords: comparison, subset, recursive, nested, data-structures

# deepset - Recursive Subset Comparison for Python

[![PyPI version](https://img.shields.io/pypi/v/deepset.svg)](https://pypi.org/project/deepset/)
[![Python versions](https://img.shields.io/pypi/pyversions/deepset.svg)](https://pypi.org/project/deepset/)
[![License](https://img.shields.io/github/license/pjkundert/python-deepset.svg)](https://github.com/pjkundert/python-deepset/blob/master/LICENSE)

Recursive subset comparison for complex nested Python data structures. Express relationships like "this nested structure is contained within that one" naturally.

## Quick Start

```python
from deepset import deepset

# Set subsets
assert deepset({1, 2}) <= {1, 2, 3}  # True

# Nested structures  
assert deepset({('a', frozenset({2}))}) <= {('a', frozenset({2, 3}))}  # True

# Sequential lists (order matters, gaps allowed)
assert deepset([1, 3]) <= [1, 2, 3, 4]  # True

# Dictionary subsets
assert deepset({'a': 1}) <= {'a': 1, 'b': 2}  # True

# Mixed nested
data1 = {'sets': {frozenset({1, 2})}, 'lists': [[1, 2]]}
data2 = {'sets': {frozenset({1, 2, 3})}, 'lists': [[1, 2, 3]]}
assert deepset(data1) <= data2  # True
```

## Installation

```bash
pip install deepset
```

## Comparison Types

**Sets**: Traditional subset semantics
```python
assert deepset({1, 2}) < {1, 2, 3}  # True (strict subset)
assert deepset({frozenset({1, 2})}) <= {frozenset({1, 2, 3})}  # Recursive
```

**Lists/Tuples**: Sequential subset (order preserved, gaps allowed)
```python
assert deepset([1, 3]) <= [1, 2, 3, 4]  # True
assert not deepset([1, 3]) <= [3, 1]    # False (wrong order)
```

**Dictionaries**: Key subset + recursive value comparison
```python
assert deepset({'a': 1}) <= {'a': 1, 'b': 2}       # True (extra key)
assert deepset({'a': [1, 2]}) <= {'a': [1, 2, 3]}  # True (recursive)
```

**All Operators**: `<`, `<=`, `==`, `>=`, `>` supported

## Development

```bash
git clone https://github.com/pjkundert/python-deepset.git
cd python-deepset

# Standard development (with user provided Python, package installation)
make install-dev   # Install dev dependencies
make test          # Run tests
make style         # Format code (autopep8, black, isort)
make build         # Build package

# Nix environment (recommended for reproducible builds)
make nix-venv                   # Enter Nix + venv environment
make nix-venv-test              # Run tests in Nix environment
make nix-venv-unit-test_name    # Run specific test class

# Multi-version testing
TARGET=py310 make nix-venv-test # Test with Python 3.10
TARGET=py312 make nix-venv-test # Test with Python 3.12
```

## License

MIT License - Perry Kundert <perry@dominionrnd.com>