qnty


Nameqnty JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryHigh-performance unit system library for Python with dimensional safety and fast unit conversions
upload_time2025-08-29 11:38:38
maintainerNone
docs_urlNone
authortn3wman
requires_python<3.14,>=3.11
licenseApache-2.0
keywords units dimensional analysis engineering physics quantities measurements
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Qnty

**High-performance unit system library for Python with dimensional safety and fast unit conversions for engineering calculations.**

[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Development Status](https://img.shields.io/badge/status-beta-orange.svg)](https://pypi.org/project/qnty/)

## โš ๏ธ Important Disclaimer

**๐Ÿšง Work in Progress**: Qnty is currently in active development and has not been thoroughly vetted for production engineering calculations. While we strive for accuracy, this library should not be used for critical engineering applications without independent verification.

**๐Ÿ“ Accuracy Notice**: The authors are not responsible or liable for incorrect results, calculation errors, or any consequences arising from the use of this library. Always validate calculations independently using established engineering tools and practices.

**๐Ÿš€ Learn from History**: Remember, even NASA's Mars Climate Orbiter had a $327 million oops moment due to unit conversion errors between metric and imperial systems. Don't let your project become the next cautionary tale - double-check everything!

*Use Qnty to help prevent unit errors, but always verify critical calculations through multiple methods.*

---

Qnty is designed around **type safety** and **performance optimization** using compile-time dimensional analysis. It provides ultra-fast unit conversions and dimensional checking for engineering applications where performance matters.

## โœจ Key Features

- **๐Ÿš€ Ultra-Fast Performance**: Prime number encoding and pre-computed conversion tables
- **๐Ÿ›ก๏ธ Type Safety**: Compile-time dimensional analysis prevents unit errors
- **โšก Zero-Cost Abstractions**: Optimized operations with `__slots__` and caching
- **๐Ÿ”— Fluent API**: Intuitive method chaining for readable code
- **๐Ÿงฎ Engineering-Focused**: Built for real-world engineering calculations
- **๐Ÿงฌ Mathematical System**: Built-in equation solving and expression trees
- **๐Ÿ“Š Comprehensive Testing**: 457 tests with performance benchmarks
- **๐Ÿ—๏ธ Clean Architecture**: Circular import-free design with strict dependency hierarchy

## ๐Ÿš€ Quick Start

### Installation

```bash
pip install qnty
# or with Poetry
poetry add qnty
```

### Basic Usage

```python
from qnty import Length, Pressure, Dimensionless
from qnty.variable import FastQuantity
from qnty.units import LengthUnits, PressureUnits

# Type-safe variables with fluent API
beam_length = Length("beam_length")
beam_length.set(100.0).millimeters
print(beam_length)  # beam_length: 100.0 mm

# Convert units effortlessly
length_in_meters = beam_length.quantity.to(LengthUnits.meter)
print(length_in_meters)  # 0.1 m

# High-performance calculations
pressure = FastQuantity(150.0, PressureUnits.psi)
area = FastQuantity(0.5, LengthUnits.meter) * FastQuantity(2.0, LengthUnits.meter)
force = pressure * area  # Automatic dimensional analysis
```

### Engineering Example

```python
from qnty import Length, Pressure

# ASME pressure vessel calculation with mixed units
pressure = Pressure("internal_pressure")
diameter = Length("outer_diameter") 
stress = Pressure("allowable_stress")

# Set values with different units - no manual conversion needed!
pressure.set(2900.75).psi        # Imperial
diameter.set(168.275).millimeters  # Metric
stress.set(137.895).MPa          # SI

# Qnty handles all unit conversions automatically
thickness = (pressure.quantity * diameter.quantity) / (2 * stress.quantity)
print(f"Required thickness: {thickness}")  # Automatically in correct units
```

### Mathematical Equations & Solving

```python
from qnty import Length, Pressure, Dimensionless

# Define engineering variables
T = Length("Wall Thickness", is_known=False)  # Unknown to solve for
T_bar = Length(0.147, "inches", "Nominal Wall Thickness")
U_m = Dimensionless(0.125, "Mill Undertolerance")

# Create equation using fluent API: T = T_bar * (1 - U_m)
equation = T.equals(T_bar * (1 - U_m))

# Solve automatically
known_vars = {"T_bar": T_bar, "U_m": U_m}
result = equation.solve_for("T", known_vars)
print(f"Solved thickness: {result.quantity}")  # 0.128625 inches

# Verify equation is satisfied
assert equation.check_residual(known_vars) is True
```

## ๐Ÿ—๏ธ Architecture

### Clean Dependency Design

Qnty features a carefully designed architecture that eliminates circular imports through a strict dependency hierarchy:

```python
variable โ†’ variables โ†’ expression โ†’ equation
```

This ensures clean type checking, maintainable code, and optimal performance throughout the system.

### Core Components

### ๐Ÿ”ข Dimensional System

- Prime number encoding for ultra-fast dimensional compatibility checks
- Zero-cost dimensional analysis at compile time
- Immutable dimension signatures for thread safety

### โš™๏ธ High-Performance Quantities

- `FastQuantity`: Optimized for engineering calculations with `__slots__`
- Cached SI factors and dimension signatures
- Fast-path optimizations for same-unit operations

### ๐ŸŽฏ Type-Safe Variables

- `Length`, `Pressure`, `Dimensionless`: Domain-specific variables with compile-time safety
- Fluent API with specialized setters
- Prevents dimensional errors at the type level

### ๐Ÿ”„ Smart Unit System

- Pre-computed conversion tables
- Automatic unit resolution for calculations
- Support for mixed-unit operations

### ๐Ÿงฌ Mathematical System

- Built-in equation solving with symbolic manipulation
- Expression trees for complex mathematical operations
- Automatic residual checking and validation
- Engineering equation support (ASME, pressure vessels, etc.)

## ๐Ÿ“Š Performance

Qnty significantly outperforms other unit libraries with **18.9x average speedup** over Pint:

### Real Benchmark Results (ฮผs per operation)

| Operation | Qnty | Pint | **Speedup** |
|-----------|------|------|-------------|
| Unit Conversion (m โ†’ mm) | 0.50 | 9.72 | **19.5x** |
| Mixed Unit Addition (mm + in) | 0.76 | 17.52 | **23.1x** |
| Multiplication (m ร— m) | 0.82 | 10.64 | **12.9x** |
| Division (psi รท mm) | 0.87 | 11.23 | **12.9x** |
| Complex ASME Equation | 4.07 | 106.17 | **26.1x** ๐Ÿš€ |
| Type-Safe Variables | 0.98 | 9.65 | **9.8x** |
| Chained Operations | 1.83 | 42.22 | **23.1x** |
| Loop (10 additions) | 5.32 | 79.48 | **14.9x** |
| **AVERAGE** | **1.89** | **35.83** | **18.9x** ๐Ÿ† |

*Benchmarks performed on typical engineering calculations. Run `pytest tests/test_benchmark.py -v -s` to verify on your system.*

## ๐Ÿงช Advanced Features

### Fluent API Design

```python
# Method chaining for readable code
pipe_system = {
    'inlet': Pressure("inlet").set(150.0).psi,
    'outlet': Pressure("outlet").set(120.0).psi,
    'diameter': Length("diameter").set(6.0).inches,
    'length': Length("length").set(100.0).feet
}

pressure_drop = pipe_system['inlet'].quantity - pipe_system['outlet'].quantity
```

### Dimensional Safety

```python
# This will raise a TypeError at assignment time
length = Length("distance")
try:
    length.set(100.0).psi  # Wrong! Pressure unit for length variable
except TypeError as e:
    print(f"Caught error: {e}")  # Unit psi incompatible with expected dimension

# Type checker catches this at development time
```

### Mixed Unit Calculations

```python
# Automatically handles unit conversions in calculations
width = Length("width").set(100.0).millimeters
height = Length("height").set(4.0).inches  # Different unit!

# Qnty automatically converts to compatible units
area = width.quantity * height.quantity
perimeter = 2 * (width.quantity + height.quantity)
```

### Equation Solving System

```python
from qnty import Length, Pressure, Dimensionless

# Multi-variable engineering equations
P = Pressure(90, "psi", "P")  # Known
D = Length(0.84, "inches", "D")  # Known
t = Length("t", is_known=False)  # Unknown - solve for this
S = Pressure(20000, "psi", "S")  # Known

# ASME pressure vessel equation: P = (S * t) / ((D/2) + 0.6*t)
# Rearranged to solve for t
equation = t.equals((P * D) / (2 * S - 1.2 * P))

# Solve automatically
known_variables = {"P": P, "D": D, "S": S}
thickness_result = equation.solve_for("t", known_variables)
print(f"Required thickness: {thickness_result.quantity}")

# Verify solution
assert equation.check_residual(known_variables) is True
```

### Import Strategy

Qnty provides a clean, minimal public API:

```python
# Preferred import style - clean public API
from qnty import Length, Pressure, Dimensionless

# Internal imports when needed for advanced usage
from qnty.variable import FastQuantity, TypeSafeVariable
from qnty.expression import Expression
from qnty.equation import Equation, EquationSystem
```

## ๐Ÿ”ง Development

### Setup Development Environment

```bash
git clone https://github.com/your-username/qnty.git
cd qnty
pip install -r requirements.txt

# Run all tests
pytest

# Run specific test file
pytest tests/test_dimension.py -v

# Run benchmarks
python tests/test_benchmark.py
```

### Code Quality

```bash
# Linting with ruff (200 character line length)
ruff check src/ tests/
ruff format src/ tests/

# Type checking
mypy src/qnty/
```

## ๐Ÿ“š Documentation

### Core Classes

- **`FastQuantity`**: High-performance quantity with value and unit
- **`TypeSafeVariable`**: Base class for dimension-specific variables
- **`Length`**, **`Pressure`**, **`Dimensionless`**: Specialized variables with fluent setters
- **`Equation`**: Mathematical equations with solving capabilities
- **`Expression`**: Abstract base for mathematical expression trees
- **`DimensionSignature`**: Immutable dimension encoding system
- **`UnitConstant`**: Type-safe unit definitions

### Unit Categories

- **Length**: meter, millimeter, inch, foot, etc.
- **Pressure**: pascal, psi, bar, kilopascal, megapascal, etc.
- **Dimensionless**: ratios, efficiency factors, etc.
- *More dimensions coming soon*

## ๐Ÿค Contributing

We welcome contributions! Please see our contributing guidelines and:

1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass: `pytest`
5. Submit a pull request

## ๐Ÿ“„ License

This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ™ Acknowledgments

- Inspired by the [Pint](https://pint.readthedocs.io/) library
- Built for the engineering community
- Designed with performance-critical applications in mind

---

**Ready to supercharge your engineering calculations?** Install Qnty today and experience the power of type-safe, high-performance unit handling! ๐Ÿš€


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "qnty",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.11",
    "maintainer_email": null,
    "keywords": "units, dimensional analysis, engineering, physics, quantities, measurements",
    "author": "tn3wman",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/c5/81/e99caf32b74a7746b8de557a1984a4eb4784b9cc68784d08d84990d45346/qnty-0.0.2.tar.gz",
    "platform": null,
    "description": "# Qnty\n\n**High-performance unit system library for Python with dimensional safety and fast unit conversions for engineering calculations.**\n\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Development Status](https://img.shields.io/badge/status-beta-orange.svg)](https://pypi.org/project/qnty/)\n\n## \u26a0\ufe0f Important Disclaimer\n\n**\ud83d\udea7 Work in Progress**: Qnty is currently in active development and has not been thoroughly vetted for production engineering calculations. While we strive for accuracy, this library should not be used for critical engineering applications without independent verification.\n\n**\ud83d\udcd0 Accuracy Notice**: The authors are not responsible or liable for incorrect results, calculation errors, or any consequences arising from the use of this library. Always validate calculations independently using established engineering tools and practices.\n\n**\ud83d\ude80 Learn from History**: Remember, even NASA's Mars Climate Orbiter had a $327 million oops moment due to unit conversion errors between metric and imperial systems. Don't let your project become the next cautionary tale - double-check everything!\n\n*Use Qnty to help prevent unit errors, but always verify critical calculations through multiple methods.*\n\n---\n\nQnty is designed around **type safety** and **performance optimization** using compile-time dimensional analysis. It provides ultra-fast unit conversions and dimensional checking for engineering applications where performance matters.\n\n## \u2728 Key Features\n\n- **\ud83d\ude80 Ultra-Fast Performance**: Prime number encoding and pre-computed conversion tables\n- **\ud83d\udee1\ufe0f Type Safety**: Compile-time dimensional analysis prevents unit errors\n- **\u26a1 Zero-Cost Abstractions**: Optimized operations with `__slots__` and caching\n- **\ud83d\udd17 Fluent API**: Intuitive method chaining for readable code\n- **\ud83e\uddee Engineering-Focused**: Built for real-world engineering calculations\n- **\ud83e\uddec Mathematical System**: Built-in equation solving and expression trees\n- **\ud83d\udcca Comprehensive Testing**: 457 tests with performance benchmarks\n- **\ud83c\udfd7\ufe0f Clean Architecture**: Circular import-free design with strict dependency hierarchy\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install qnty\n# or with Poetry\npoetry add qnty\n```\n\n### Basic Usage\n\n```python\nfrom qnty import Length, Pressure, Dimensionless\nfrom qnty.variable import FastQuantity\nfrom qnty.units import LengthUnits, PressureUnits\n\n# Type-safe variables with fluent API\nbeam_length = Length(\"beam_length\")\nbeam_length.set(100.0).millimeters\nprint(beam_length)  # beam_length: 100.0 mm\n\n# Convert units effortlessly\nlength_in_meters = beam_length.quantity.to(LengthUnits.meter)\nprint(length_in_meters)  # 0.1 m\n\n# High-performance calculations\npressure = FastQuantity(150.0, PressureUnits.psi)\narea = FastQuantity(0.5, LengthUnits.meter) * FastQuantity(2.0, LengthUnits.meter)\nforce = pressure * area  # Automatic dimensional analysis\n```\n\n### Engineering Example\n\n```python\nfrom qnty import Length, Pressure\n\n# ASME pressure vessel calculation with mixed units\npressure = Pressure(\"internal_pressure\")\ndiameter = Length(\"outer_diameter\") \nstress = Pressure(\"allowable_stress\")\n\n# Set values with different units - no manual conversion needed!\npressure.set(2900.75).psi        # Imperial\ndiameter.set(168.275).millimeters  # Metric\nstress.set(137.895).MPa          # SI\n\n# Qnty handles all unit conversions automatically\nthickness = (pressure.quantity * diameter.quantity) / (2 * stress.quantity)\nprint(f\"Required thickness: {thickness}\")  # Automatically in correct units\n```\n\n### Mathematical Equations & Solving\n\n```python\nfrom qnty import Length, Pressure, Dimensionless\n\n# Define engineering variables\nT = Length(\"Wall Thickness\", is_known=False)  # Unknown to solve for\nT_bar = Length(0.147, \"inches\", \"Nominal Wall Thickness\")\nU_m = Dimensionless(0.125, \"Mill Undertolerance\")\n\n# Create equation using fluent API: T = T_bar * (1 - U_m)\nequation = T.equals(T_bar * (1 - U_m))\n\n# Solve automatically\nknown_vars = {\"T_bar\": T_bar, \"U_m\": U_m}\nresult = equation.solve_for(\"T\", known_vars)\nprint(f\"Solved thickness: {result.quantity}\")  # 0.128625 inches\n\n# Verify equation is satisfied\nassert equation.check_residual(known_vars) is True\n```\n\n## \ud83c\udfd7\ufe0f Architecture\n\n### Clean Dependency Design\n\nQnty features a carefully designed architecture that eliminates circular imports through a strict dependency hierarchy:\n\n```python\nvariable \u2192 variables \u2192 expression \u2192 equation\n```\n\nThis ensures clean type checking, maintainable code, and optimal performance throughout the system.\n\n### Core Components\n\n### \ud83d\udd22 Dimensional System\n\n- Prime number encoding for ultra-fast dimensional compatibility checks\n- Zero-cost dimensional analysis at compile time\n- Immutable dimension signatures for thread safety\n\n### \u2699\ufe0f High-Performance Quantities\n\n- `FastQuantity`: Optimized for engineering calculations with `__slots__`\n- Cached SI factors and dimension signatures\n- Fast-path optimizations for same-unit operations\n\n### \ud83c\udfaf Type-Safe Variables\n\n- `Length`, `Pressure`, `Dimensionless`: Domain-specific variables with compile-time safety\n- Fluent API with specialized setters\n- Prevents dimensional errors at the type level\n\n### \ud83d\udd04 Smart Unit System\n\n- Pre-computed conversion tables\n- Automatic unit resolution for calculations\n- Support for mixed-unit operations\n\n### \ud83e\uddec Mathematical System\n\n- Built-in equation solving with symbolic manipulation\n- Expression trees for complex mathematical operations\n- Automatic residual checking and validation\n- Engineering equation support (ASME, pressure vessels, etc.)\n\n## \ud83d\udcca Performance\n\nQnty significantly outperforms other unit libraries with **18.9x average speedup** over Pint:\n\n### Real Benchmark Results (\u03bcs per operation)\n\n| Operation | Qnty | Pint | **Speedup** |\n|-----------|------|------|-------------|\n| Unit Conversion (m \u2192 mm) | 0.50 | 9.72 | **19.5x** |\n| Mixed Unit Addition (mm + in) | 0.76 | 17.52 | **23.1x** |\n| Multiplication (m \u00d7 m) | 0.82 | 10.64 | **12.9x** |\n| Division (psi \u00f7 mm) | 0.87 | 11.23 | **12.9x** |\n| Complex ASME Equation | 4.07 | 106.17 | **26.1x** \ud83d\ude80 |\n| Type-Safe Variables | 0.98 | 9.65 | **9.8x** |\n| Chained Operations | 1.83 | 42.22 | **23.1x** |\n| Loop (10 additions) | 5.32 | 79.48 | **14.9x** |\n| **AVERAGE** | **1.89** | **35.83** | **18.9x** \ud83c\udfc6 |\n\n*Benchmarks performed on typical engineering calculations. Run `pytest tests/test_benchmark.py -v -s` to verify on your system.*\n\n## \ud83e\uddea Advanced Features\n\n### Fluent API Design\n\n```python\n# Method chaining for readable code\npipe_system = {\n    'inlet': Pressure(\"inlet\").set(150.0).psi,\n    'outlet': Pressure(\"outlet\").set(120.0).psi,\n    'diameter': Length(\"diameter\").set(6.0).inches,\n    'length': Length(\"length\").set(100.0).feet\n}\n\npressure_drop = pipe_system['inlet'].quantity - pipe_system['outlet'].quantity\n```\n\n### Dimensional Safety\n\n```python\n# This will raise a TypeError at assignment time\nlength = Length(\"distance\")\ntry:\n    length.set(100.0).psi  # Wrong! Pressure unit for length variable\nexcept TypeError as e:\n    print(f\"Caught error: {e}\")  # Unit psi incompatible with expected dimension\n\n# Type checker catches this at development time\n```\n\n### Mixed Unit Calculations\n\n```python\n# Automatically handles unit conversions in calculations\nwidth = Length(\"width\").set(100.0).millimeters\nheight = Length(\"height\").set(4.0).inches  # Different unit!\n\n# Qnty automatically converts to compatible units\narea = width.quantity * height.quantity\nperimeter = 2 * (width.quantity + height.quantity)\n```\n\n### Equation Solving System\n\n```python\nfrom qnty import Length, Pressure, Dimensionless\n\n# Multi-variable engineering equations\nP = Pressure(90, \"psi\", \"P\")  # Known\nD = Length(0.84, \"inches\", \"D\")  # Known\nt = Length(\"t\", is_known=False)  # Unknown - solve for this\nS = Pressure(20000, \"psi\", \"S\")  # Known\n\n# ASME pressure vessel equation: P = (S * t) / ((D/2) + 0.6*t)\n# Rearranged to solve for t\nequation = t.equals((P * D) / (2 * S - 1.2 * P))\n\n# Solve automatically\nknown_variables = {\"P\": P, \"D\": D, \"S\": S}\nthickness_result = equation.solve_for(\"t\", known_variables)\nprint(f\"Required thickness: {thickness_result.quantity}\")\n\n# Verify solution\nassert equation.check_residual(known_variables) is True\n```\n\n### Import Strategy\n\nQnty provides a clean, minimal public API:\n\n```python\n# Preferred import style - clean public API\nfrom qnty import Length, Pressure, Dimensionless\n\n# Internal imports when needed for advanced usage\nfrom qnty.variable import FastQuantity, TypeSafeVariable\nfrom qnty.expression import Expression\nfrom qnty.equation import Equation, EquationSystem\n```\n\n## \ud83d\udd27 Development\n\n### Setup Development Environment\n\n```bash\ngit clone https://github.com/your-username/qnty.git\ncd qnty\npip install -r requirements.txt\n\n# Run all tests\npytest\n\n# Run specific test file\npytest tests/test_dimension.py -v\n\n# Run benchmarks\npython tests/test_benchmark.py\n```\n\n### Code Quality\n\n```bash\n# Linting with ruff (200 character line length)\nruff check src/ tests/\nruff format src/ tests/\n\n# Type checking\nmypy src/qnty/\n```\n\n## \ud83d\udcda Documentation\n\n### Core Classes\n\n- **`FastQuantity`**: High-performance quantity with value and unit\n- **`TypeSafeVariable`**: Base class for dimension-specific variables\n- **`Length`**, **`Pressure`**, **`Dimensionless`**: Specialized variables with fluent setters\n- **`Equation`**: Mathematical equations with solving capabilities\n- **`Expression`**: Abstract base for mathematical expression trees\n- **`DimensionSignature`**: Immutable dimension encoding system\n- **`UnitConstant`**: Type-safe unit definitions\n\n### Unit Categories\n\n- **Length**: meter, millimeter, inch, foot, etc.\n- **Pressure**: pascal, psi, bar, kilopascal, megapascal, etc.\n- **Dimensionless**: ratios, efficiency factors, etc.\n- *More dimensions coming soon*\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see our contributing guidelines and:\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new functionality\n4. Ensure all tests pass: `pytest`\n5. Submit a pull request\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- Inspired by the [Pint](https://pint.readthedocs.io/) library\n- Built for the engineering community\n- Designed with performance-critical applications in mind\n\n---\n\n**Ready to supercharge your engineering calculations?** Install Qnty today and experience the power of type-safe, high-performance unit handling! \ud83d\ude80\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "High-performance unit system library for Python with dimensional safety and fast unit conversions",
    "version": "0.0.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/tn3wman/qnty/issues",
        "Documentation": "https://github.com/tn3wman/qnty#readme",
        "Homepage": "https://github.com/tn3wman/qnty",
        "Repository": "https://github.com/tn3wman/qnty"
    },
    "split_keywords": [
        "units",
        " dimensional analysis",
        " engineering",
        " physics",
        " quantities",
        " measurements"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ae6c3259e4220b92c8fe5bd8884179fea4d40d7f486ad21d78a8ffce45feb88d",
                "md5": "903c69ccd275d0cc6b930db54e72b8d5",
                "sha256": "235f225ea5b7a97005ce17e666adc0f586d9ed0d924746ef9f6e9a026b3ea1cb"
            },
            "downloads": -1,
            "filename": "qnty-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "903c69ccd275d0cc6b930db54e72b8d5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.11",
            "size": 19195,
            "upload_time": "2025-08-29T11:38:37",
            "upload_time_iso_8601": "2025-08-29T11:38:37.495517Z",
            "url": "https://files.pythonhosted.org/packages/ae/6c/3259e4220b92c8fe5bd8884179fea4d40d7f486ad21d78a8ffce45feb88d/qnty-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c581e99caf32b74a7746b8de557a1984a4eb4784b9cc68784d08d84990d45346",
                "md5": "3910de3150ab5225d4614e77531f7d56",
                "sha256": "a3d19f0a8d3e1b6f8f9f4895d00db240a9e142d58f7d2866f41d20ae8fa68ac4"
            },
            "downloads": -1,
            "filename": "qnty-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "3910de3150ab5225d4614e77531f7d56",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.14,>=3.11",
            "size": 20554,
            "upload_time": "2025-08-29T11:38:38",
            "upload_time_iso_8601": "2025-08-29T11:38:38.683115Z",
            "url": "https://files.pythonhosted.org/packages/c5/81/e99caf32b74a7746b8de557a1984a4eb4784b9cc68784d08d84990d45346/qnty-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-29 11:38:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tn3wman",
    "github_project": "qnty",
    "github_not_found": true,
    "lcname": "qnty"
}
        
Elapsed time: 0.95649s