json-tools-rs


Namejson-tools-rs JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryHigh-performance JSON manipulation library with SIMD-accelerated parsing
upload_time2025-07-29 09:36:03
maintainerNone
docs_urlNone
authorJSON Tools RS Contributors
requires_python>=3.8
licenseMIT OR Apache-2.0
keywords json flatten manipulation parsing rust simd performance
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # JSON Tools RS

A high-performance Rust library for advanced JSON manipulation with SIMD-accelerated parsing, including flattening and unflattening nested JSON structures.

## Features

- **Unified APIs**: JsonFlattener and JsonUnflattener with matching builder patterns
- **Complete Roundtrip Support**: Flatten JSON and unflatten it back to original structure
- **High Performance**: SIMD-accelerated JSON parsing with optimized algorithms
- **Builder Pattern**: Fluent, chainable API for easy configuration
- **Comprehensive Filtering**: Remove empty values, nulls, empty objects/arrays
- **Advanced Replacements**: Support for literal and regex-based key/value replacements
- **Batch Processing**: Handle single JSON strings or arrays of JSON strings
- **Python Bindings**: Full Python support via maturin/PyO3

## Quick Start

### Rust

#### Flattening JSON

```rust
use json_tools_rs::{JsonFlattener, JsonOutput};

let json = r#"{"user": {"name": "John", "details": {"age": null, "city": ""}}}"#;
let result = JsonFlattener::new()
    .remove_empty_strings(true)
    .remove_nulls(true)
    .flatten(json)?;

match result {
    JsonOutput::Single(flattened) => println!("{}", flattened),
    JsonOutput::Multiple(_) => unreachable!(),
}
// Output: {"user.name": "John"}
```

#### Unflattening JSON

```rust
use json_tools_rs::{JsonUnflattener, JsonOutput};

let flattened = r#"{"user.name": "John", "user.age": 30, "items.0": "first", "items.1": "second"}"#;
let result = JsonUnflattener::new().unflatten(flattened)?;

match result {
    JsonOutput::Single(unflattened) => println!("{}", unflattened),
    JsonOutput::Multiple(_) => unreachable!(),
}
// Output: {"user": {"name": "John", "age": 30}, "items": ["first", "second"]}
```

#### Roundtrip Example

```rust
use json_tools_rs::{JsonFlattener, JsonUnflattener, JsonOutput};

let original = r#"{"user": {"name": "John", "age": 30}, "items": [1, 2, {"nested": "value"}]}"#;

// Flatten
let flattened = JsonFlattener::new().flatten(original)?.into_single();
// Unflatten back
let restored = JsonUnflattener::new().unflatten(&flattened)?.into_single();

// original and restored are equivalent JSON structures
assert_eq!(
    serde_json::from_str::<serde_json::Value>(original)?,
    serde_json::from_str::<serde_json::Value>(&restored)?
);
```

### Python

#### Flattening

```python
import json_tools_rs

# Perfect type matching - input type = output type!

# JSON string input → JSON string output
flattener = json_tools_rs.JsonFlattener()
result = flattener.flatten('{"user": {"name": "John", "age": 30}}')
print(result)  # '{"user.name": "John", "user.age": 30}' (str)

# Python dict input → Python dict output (much more convenient!)
result = flattener.flatten({"user": {"name": "John", "age": 30}})
print(result)  # {'user.name': 'John', 'user.age': 30} (dict)

# Advanced configuration
flattener = (json_tools_rs.JsonFlattener()
    .remove_empty_strings(True)
    .remove_nulls(True)
    .separator("_")
    .lowercase_keys(True))

result = flattener.flatten({"User": {"Name": "John", "Email": ""}})
print(result)  # {'user_name': 'John'} (dict)
```

#### Unflattening

```python
import json_tools_rs

# JSON string input → JSON string output
unflattener = json_tools_rs.JsonUnflattener()
result = unflattener.unflatten('{"user.name": "John", "user.age": 30}')
print(result)  # '{"user": {"name": "John", "age": 30}}' (str)

# Python dict input → Python dict output
result = unflattener.unflatten({"user.name": "John", "items.0": "first", "items.1": "second"})
print(result)  # {'user': {'name': 'John'}, 'items': ['first', 'second']} (dict)

# Advanced configuration with builder pattern
unflattener = (json_tools_rs.JsonUnflattener()
    .separator("_")
    .lowercase_keys(True)
    .key_replacement("prefix_", "user_")
    .value_replacement("@company.org", "@example.com"))

result = unflattener.unflatten({"PREFIX_NAME": "john@company.org"})
print(result)  # {'user': {'name': 'john@example.com'}} (dict)

# Roundtrip example
original = {"user": {"name": "John", "age": 30}, "items": [1, 2, {"nested": "value"}]}
flattened = json_tools_rs.JsonFlattener().flatten(original)
restored = json_tools_rs.JsonUnflattener().unflatten(flattened)
assert original == restored  # Perfect roundtrip!
```

#### Batch Processing

```python
# Flattening: List[str] input → List[str] output
results = flattener.flatten(['{"a": 1}', '{"b": 2}'])
print(results)  # ['{"a": 1}', '{"b": 2}'] (list of strings)

# Flattening: List[dict] input → List[dict] output
results = flattener.flatten([{"a": 1}, {"b": 2}])
print(results)  # [{'a': 1}, {'b': 2}] (list of dicts)

# Unflattening: List[str] input → List[str] output
unflattener = json_tools_rs.JsonUnflattener()
results = unflattener.unflatten(['{"a.b": 1}', '{"c.d": 2}'])
print(results)  # ['{"a": {"b": 1}}', '{"c": {"d": 2}}'] (list of strings)

# Unflattening: List[dict] input → List[dict] output
results = unflattener.unflatten([{"a.b": 1}, {"c.d": 2}])
print(results)  # [{'a': {'b': 1}}, {'c': {'d': 2}}] (list of dicts)
```

## Installation

### Rust

Add to your `Cargo.toml`:

```toml
[dependencies]
json-tools-rs = "0.1.0"
```

### Python

Install from PyPI (when published):

```bash
pip install json-tools-rs
```

Or build from source:

```bash
git clone https://github.com/amaye15/JSON-Tools-rs.git
cd JSON-Tools-rs
maturin develop --features python
```

## Performance

JSON Tools RS delivers excellent performance across different workloads:

- **Basic flattening**: 2,000+ keys/ms
- **Advanced configuration**: 1,300+ keys/ms  
- **Regex replacements**: 1,800+ keys/ms
- **Batch processing**: 1,900+ keys/ms

## API Reference

### JsonFlattener

The main entry point for all JSON flattening operations. Provides a builder pattern API:

- `remove_empty_strings(bool)` - Remove keys with empty string values
- `remove_nulls(bool)` - Remove keys with null values
- `remove_empty_objects(bool)` - Remove keys with empty object values
- `remove_empty_arrays(bool)` - Remove keys with empty array values
- `key_replacement(find, replace)` - Add key replacement pattern
- `value_replacement(find, replace)` - Add value replacement pattern
- `separator(sep)` - Set separator for nested keys (default: ".")
- `lowercase_keys(bool)` - Convert all keys to lowercase
- `flatten(input)` - Flatten the JSON input

### JsonUnflattener

The companion to JsonFlattener that provides the inverse operation - converting flattened JSON back to nested JSON structure. Provides the same builder pattern API:

- `key_replacement(find, replace)` - Add key replacement pattern (applied before unflattening)
- `value_replacement(find, replace)` - Add value replacement pattern (applied before unflattening)
- `separator(sep)` - Set separator for nested keys (default: ".")
- `lowercase_keys(bool)` - Convert all keys to lowercase before processing
- `unflatten(input)` - Unflatten the JSON input

## License

This project is licensed under either of

- Apache License, Version 2.0
- MIT License

at your option.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "json-tools-rs",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "json, flatten, manipulation, parsing, rust, simd, performance",
    "author": "JSON Tools RS Contributors",
    "author_email": null,
    "download_url": null,
    "platform": null,
    "description": "# JSON Tools RS\n\nA high-performance Rust library for advanced JSON manipulation with SIMD-accelerated parsing, including flattening and unflattening nested JSON structures.\n\n## Features\n\n- **Unified APIs**: JsonFlattener and JsonUnflattener with matching builder patterns\n- **Complete Roundtrip Support**: Flatten JSON and unflatten it back to original structure\n- **High Performance**: SIMD-accelerated JSON parsing with optimized algorithms\n- **Builder Pattern**: Fluent, chainable API for easy configuration\n- **Comprehensive Filtering**: Remove empty values, nulls, empty objects/arrays\n- **Advanced Replacements**: Support for literal and regex-based key/value replacements\n- **Batch Processing**: Handle single JSON strings or arrays of JSON strings\n- **Python Bindings**: Full Python support via maturin/PyO3\n\n## Quick Start\n\n### Rust\n\n#### Flattening JSON\n\n```rust\nuse json_tools_rs::{JsonFlattener, JsonOutput};\n\nlet json = r#\"{\"user\": {\"name\": \"John\", \"details\": {\"age\": null, \"city\": \"\"}}}\"#;\nlet result = JsonFlattener::new()\n    .remove_empty_strings(true)\n    .remove_nulls(true)\n    .flatten(json)?;\n\nmatch result {\n    JsonOutput::Single(flattened) => println!(\"{}\", flattened),\n    JsonOutput::Multiple(_) => unreachable!(),\n}\n// Output: {\"user.name\": \"John\"}\n```\n\n#### Unflattening JSON\n\n```rust\nuse json_tools_rs::{JsonUnflattener, JsonOutput};\n\nlet flattened = r#\"{\"user.name\": \"John\", \"user.age\": 30, \"items.0\": \"first\", \"items.1\": \"second\"}\"#;\nlet result = JsonUnflattener::new().unflatten(flattened)?;\n\nmatch result {\n    JsonOutput::Single(unflattened) => println!(\"{}\", unflattened),\n    JsonOutput::Multiple(_) => unreachable!(),\n}\n// Output: {\"user\": {\"name\": \"John\", \"age\": 30}, \"items\": [\"first\", \"second\"]}\n```\n\n#### Roundtrip Example\n\n```rust\nuse json_tools_rs::{JsonFlattener, JsonUnflattener, JsonOutput};\n\nlet original = r#\"{\"user\": {\"name\": \"John\", \"age\": 30}, \"items\": [1, 2, {\"nested\": \"value\"}]}\"#;\n\n// Flatten\nlet flattened = JsonFlattener::new().flatten(original)?.into_single();\n// Unflatten back\nlet restored = JsonUnflattener::new().unflatten(&flattened)?.into_single();\n\n// original and restored are equivalent JSON structures\nassert_eq!(\n    serde_json::from_str::<serde_json::Value>(original)?,\n    serde_json::from_str::<serde_json::Value>(&restored)?\n);\n```\n\n### Python\n\n#### Flattening\n\n```python\nimport json_tools_rs\n\n# Perfect type matching - input type = output type!\n\n# JSON string input \u2192 JSON string output\nflattener = json_tools_rs.JsonFlattener()\nresult = flattener.flatten('{\"user\": {\"name\": \"John\", \"age\": 30}}')\nprint(result)  # '{\"user.name\": \"John\", \"user.age\": 30}' (str)\n\n# Python dict input \u2192 Python dict output (much more convenient!)\nresult = flattener.flatten({\"user\": {\"name\": \"John\", \"age\": 30}})\nprint(result)  # {'user.name': 'John', 'user.age': 30} (dict)\n\n# Advanced configuration\nflattener = (json_tools_rs.JsonFlattener()\n    .remove_empty_strings(True)\n    .remove_nulls(True)\n    .separator(\"_\")\n    .lowercase_keys(True))\n\nresult = flattener.flatten({\"User\": {\"Name\": \"John\", \"Email\": \"\"}})\nprint(result)  # {'user_name': 'John'} (dict)\n```\n\n#### Unflattening\n\n```python\nimport json_tools_rs\n\n# JSON string input \u2192 JSON string output\nunflattener = json_tools_rs.JsonUnflattener()\nresult = unflattener.unflatten('{\"user.name\": \"John\", \"user.age\": 30}')\nprint(result)  # '{\"user\": {\"name\": \"John\", \"age\": 30}}' (str)\n\n# Python dict input \u2192 Python dict output\nresult = unflattener.unflatten({\"user.name\": \"John\", \"items.0\": \"first\", \"items.1\": \"second\"})\nprint(result)  # {'user': {'name': 'John'}, 'items': ['first', 'second']} (dict)\n\n# Advanced configuration with builder pattern\nunflattener = (json_tools_rs.JsonUnflattener()\n    .separator(\"_\")\n    .lowercase_keys(True)\n    .key_replacement(\"prefix_\", \"user_\")\n    .value_replacement(\"@company.org\", \"@example.com\"))\n\nresult = unflattener.unflatten({\"PREFIX_NAME\": \"john@company.org\"})\nprint(result)  # {'user': {'name': 'john@example.com'}} (dict)\n\n# Roundtrip example\noriginal = {\"user\": {\"name\": \"John\", \"age\": 30}, \"items\": [1, 2, {\"nested\": \"value\"}]}\nflattened = json_tools_rs.JsonFlattener().flatten(original)\nrestored = json_tools_rs.JsonUnflattener().unflatten(flattened)\nassert original == restored  # Perfect roundtrip!\n```\n\n#### Batch Processing\n\n```python\n# Flattening: List[str] input \u2192 List[str] output\nresults = flattener.flatten(['{\"a\": 1}', '{\"b\": 2}'])\nprint(results)  # ['{\"a\": 1}', '{\"b\": 2}'] (list of strings)\n\n# Flattening: List[dict] input \u2192 List[dict] output\nresults = flattener.flatten([{\"a\": 1}, {\"b\": 2}])\nprint(results)  # [{'a': 1}, {'b': 2}] (list of dicts)\n\n# Unflattening: List[str] input \u2192 List[str] output\nunflattener = json_tools_rs.JsonUnflattener()\nresults = unflattener.unflatten(['{\"a.b\": 1}', '{\"c.d\": 2}'])\nprint(results)  # ['{\"a\": {\"b\": 1}}', '{\"c\": {\"d\": 2}}'] (list of strings)\n\n# Unflattening: List[dict] input \u2192 List[dict] output\nresults = unflattener.unflatten([{\"a.b\": 1}, {\"c.d\": 2}])\nprint(results)  # [{'a': {'b': 1}}, {'c': {'d': 2}}] (list of dicts)\n```\n\n## Installation\n\n### Rust\n\nAdd to your `Cargo.toml`:\n\n```toml\n[dependencies]\njson-tools-rs = \"0.1.0\"\n```\n\n### Python\n\nInstall from PyPI (when published):\n\n```bash\npip install json-tools-rs\n```\n\nOr build from source:\n\n```bash\ngit clone https://github.com/amaye15/JSON-Tools-rs.git\ncd JSON-Tools-rs\nmaturin develop --features python\n```\n\n## Performance\n\nJSON Tools RS delivers excellent performance across different workloads:\n\n- **Basic flattening**: 2,000+ keys/ms\n- **Advanced configuration**: 1,300+ keys/ms  \n- **Regex replacements**: 1,800+ keys/ms\n- **Batch processing**: 1,900+ keys/ms\n\n## API Reference\n\n### JsonFlattener\n\nThe main entry point for all JSON flattening operations. Provides a builder pattern API:\n\n- `remove_empty_strings(bool)` - Remove keys with empty string values\n- `remove_nulls(bool)` - Remove keys with null values\n- `remove_empty_objects(bool)` - Remove keys with empty object values\n- `remove_empty_arrays(bool)` - Remove keys with empty array values\n- `key_replacement(find, replace)` - Add key replacement pattern\n- `value_replacement(find, replace)` - Add value replacement pattern\n- `separator(sep)` - Set separator for nested keys (default: \".\")\n- `lowercase_keys(bool)` - Convert all keys to lowercase\n- `flatten(input)` - Flatten the JSON input\n\n### JsonUnflattener\n\nThe companion to JsonFlattener that provides the inverse operation - converting flattened JSON back to nested JSON structure. Provides the same builder pattern API:\n\n- `key_replacement(find, replace)` - Add key replacement pattern (applied before unflattening)\n- `value_replacement(find, replace)` - Add value replacement pattern (applied before unflattening)\n- `separator(sep)` - Set separator for nested keys (default: \".\")\n- `lowercase_keys(bool)` - Convert all keys to lowercase before processing\n- `unflatten(input)` - Unflatten the JSON input\n\n## License\n\nThis project is licensed under either of\n\n- Apache License, Version 2.0\n- MIT License\n\nat your option.\n\n",
    "bugtrack_url": null,
    "license": "MIT OR Apache-2.0",
    "summary": "High-performance JSON manipulation library with SIMD-accelerated parsing",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/amaye15/JSON-Tools-rs/issues",
        "Documentation": "https://github.com/amaye15/JSON-Tools-rs#readme",
        "Homepage": "https://github.com/amaye15/JSON-Tools-rs",
        "Repository": "https://github.com/amaye15/JSON-Tools-rs"
    },
    "split_keywords": [
        "json",
        " flatten",
        " manipulation",
        " parsing",
        " rust",
        " simd",
        " performance"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0d6332ae9d62a7f31ca7673f79b0a21232e72d125417bf671e51c05bdc8c2c85",
                "md5": "4dbdbd6ad68e45f87c7cfae16361353b",
                "sha256": "2af38d6eb46067164e770ac941da742cae7ef1a96ff8d1e49ce82b08f9d339c4"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4dbdbd6ad68e45f87c7cfae16361353b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 922054,
            "upload_time": "2025-07-29T09:36:03",
            "upload_time_iso_8601": "2025-07-29T09:36:03.244756Z",
            "url": "https://files.pythonhosted.org/packages/0d/63/32ae9d62a7f31ca7673f79b0a21232e72d125417bf671e51c05bdc8c2c85/json_tools_rs-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8a8fb46019c5452f0a056e9640b4cfccd395566022924b777be56b6cecb53e43",
                "md5": "e461f854cc9e1d7b7200f958ca8bab82",
                "sha256": "12669c9ca6cd4f8d62ec278f0968ae6b6794f5e1cf4cef406a27790b6c7e7b9f"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e461f854cc9e1d7b7200f958ca8bab82",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 857378,
            "upload_time": "2025-07-29T09:36:04",
            "upload_time_iso_8601": "2025-07-29T09:36:04.849059Z",
            "url": "https://files.pythonhosted.org/packages/8a/8f/b46019c5452f0a056e9640b4cfccd395566022924b777be56b6cecb53e43/json_tools_rs-0.1.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d1a5d4c1f00a74694acc2ef378108f5d1e280b100ee9e401e270478877c09195",
                "md5": "5efea4a8c3c9ce6c65f47a68338bd4a3",
                "sha256": "c20f63b28888020d85b820907259f8612d93cdb589d898511ee99de8a64f3a3c"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "5efea4a8c3c9ce6c65f47a68338bd4a3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 911792,
            "upload_time": "2025-07-29T09:36:06",
            "upload_time_iso_8601": "2025-07-29T09:36:06.481394Z",
            "url": "https://files.pythonhosted.org/packages/d1/a5/d4c1f00a74694acc2ef378108f5d1e280b100ee9e401e270478877c09195/json_tools_rs-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7296552ee19a5e9a04ab454ec134d0601564dbe43b900af1dbfc879b72406b0c",
                "md5": "ddec19b6c58966503b5c84548bce12a3",
                "sha256": "374b4a0da16cdd9b81b924e6b9521bd041236a67fc42759cc819b78691f94817"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ddec19b6c58966503b5c84548bce12a3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1008401,
            "upload_time": "2025-07-29T09:36:07",
            "upload_time_iso_8601": "2025-07-29T09:36:07.843264Z",
            "url": "https://files.pythonhosted.org/packages/72/96/552ee19a5e9a04ab454ec134d0601564dbe43b900af1dbfc879b72406b0c/json_tools_rs-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6f47f62324435c6ecca0185235b8c6a7fdd45269d8e3eafc4f8c9292c55cd2bd",
                "md5": "0f718f670ae27918ef8a4bdc2010ee3d",
                "sha256": "2e39077fc44d141c3416354cfb92381d4567b16f8758a2d0f604a710b29ef8a1"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0f718f670ae27918ef8a4bdc2010ee3d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 877137,
            "upload_time": "2025-07-29T09:36:09",
            "upload_time_iso_8601": "2025-07-29T09:36:09.428398Z",
            "url": "https://files.pythonhosted.org/packages/6f/47/f62324435c6ecca0185235b8c6a7fdd45269d8e3eafc4f8c9292c55cd2bd/json_tools_rs-0.1.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "05617ee6fca2cc4919ccb8094bc34c527d26403454b1c747f5bef2155470890d",
                "md5": "2f8d6d0439026a25b8e6cf575bb2b1e5",
                "sha256": "34bb618a6541367ccd42b69fd77ff97e7213f0f3f4f3fa545ef09b58a3ae7f01"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2f8d6d0439026a25b8e6cf575bb2b1e5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 922258,
            "upload_time": "2025-07-29T09:36:10",
            "upload_time_iso_8601": "2025-07-29T09:36:10.604738Z",
            "url": "https://files.pythonhosted.org/packages/05/61/7ee6fca2cc4919ccb8094bc34c527d26403454b1c747f5bef2155470890d/json_tools_rs-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "632e8a84627415b03291cf8fac036aca19280ceed8811a727e79ceeb2d6522f1",
                "md5": "0c53a5be4dae1117fb16d62af5bd83af",
                "sha256": "d77905dc2d42fbb8689c9893a9e95be22edbcd0dfa304f1c1d34d741d4316f4a"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0c53a5be4dae1117fb16d62af5bd83af",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 857442,
            "upload_time": "2025-07-29T09:36:12",
            "upload_time_iso_8601": "2025-07-29T09:36:12.194710Z",
            "url": "https://files.pythonhosted.org/packages/63/2e/8a84627415b03291cf8fac036aca19280ceed8811a727e79ceeb2d6522f1/json_tools_rs-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7d27be0db0829020cd8bb9458ed4bba8f1be81e57de1163c7f19bac6868a7862",
                "md5": "02d9554c27b82bc8bbafba95978b695c",
                "sha256": "4579503290a180d251a9b5118f8988833d407af460ee452f8c5f320d63ca3105"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "02d9554c27b82bc8bbafba95978b695c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 911778,
            "upload_time": "2025-07-29T09:36:13",
            "upload_time_iso_8601": "2025-07-29T09:36:13.399578Z",
            "url": "https://files.pythonhosted.org/packages/7d/27/be0db0829020cd8bb9458ed4bba8f1be81e57de1163c7f19bac6868a7862/json_tools_rs-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f054518c4b2b8273f79abebf0d8d33635a22604a5f9948fba38528c7d32dd8a4",
                "md5": "0f4983c5473fd7becc605d409f10d35c",
                "sha256": "ad6471413d725a2b8c2e08762e5e28f39d2fbc3c38176c46a7de92a3593795ab"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0f4983c5473fd7becc605d409f10d35c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1008348,
            "upload_time": "2025-07-29T09:36:14",
            "upload_time_iso_8601": "2025-07-29T09:36:14.709183Z",
            "url": "https://files.pythonhosted.org/packages/f0/54/518c4b2b8273f79abebf0d8d33635a22604a5f9948fba38528c7d32dd8a4/json_tools_rs-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "eb8caf758d46d9018006f8f96799f7c4da06465facf0864ff41ab2106523bac1",
                "md5": "348cafaffce3ad0b15084be89276ea2a",
                "sha256": "a9b8584a248bde12bb6a373567738d80aac4c27d643464da11adab6e21d566c6"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "348cafaffce3ad0b15084be89276ea2a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 877154,
            "upload_time": "2025-07-29T09:36:15",
            "upload_time_iso_8601": "2025-07-29T09:36:15.860583Z",
            "url": "https://files.pythonhosted.org/packages/eb/8c/af758d46d9018006f8f96799f7c4da06465facf0864ff41ab2106523bac1/json_tools_rs-0.1.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f58c99e3b81ed0340ef16e92b5fbecc8b38845a3f7b63df7aecc16c71e888727",
                "md5": "e11054d52a3ece3cb7ae87f4aec3d0b5",
                "sha256": "d4ed545d768ca083d4008ec094b57dd88f1226ebe720fc26f6b846a8f24e64c2"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e11054d52a3ece3cb7ae87f4aec3d0b5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 920498,
            "upload_time": "2025-07-29T09:36:16",
            "upload_time_iso_8601": "2025-07-29T09:36:16.990045Z",
            "url": "https://files.pythonhosted.org/packages/f5/8c/99e3b81ed0340ef16e92b5fbecc8b38845a3f7b63df7aecc16c71e888727/json_tools_rs-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "72cdb32a77b70fcbfafb90357dcb4e44515710595aba3904bc172bbfbbaed3ff",
                "md5": "0a9c6178c42caab281daf87035b08a86",
                "sha256": "76338e528c4aee4f62b52a93644bb8b041164ba6f273ad4bad951f22dff6d563"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0a9c6178c42caab281daf87035b08a86",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 856128,
            "upload_time": "2025-07-29T09:36:18",
            "upload_time_iso_8601": "2025-07-29T09:36:18.421082Z",
            "url": "https://files.pythonhosted.org/packages/72/cd/b32a77b70fcbfafb90357dcb4e44515710595aba3904bc172bbfbbaed3ff/json_tools_rs-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1a8b5ba811e8d52b5c5c16ef066233d552349e760af44e2e0e5d55dd198a1e8c",
                "md5": "df80483f4c3142ff378d6cc80dd0bb51",
                "sha256": "21206240eb9775a57a17e62195e494150deddced9a9096600c32c07939cbbc40"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "df80483f4c3142ff378d6cc80dd0bb51",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 911249,
            "upload_time": "2025-07-29T09:36:19",
            "upload_time_iso_8601": "2025-07-29T09:36:19.821782Z",
            "url": "https://files.pythonhosted.org/packages/1a/8b/5ba811e8d52b5c5c16ef066233d552349e760af44e2e0e5d55dd198a1e8c/json_tools_rs-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "91fbe110c82ac184cb0384628393c3901d650cf102777be57931d9a08db7bd9e",
                "md5": "2f94e6f3c08bd4d229f0550cd74ae5bf",
                "sha256": "3e26f9723c7e3618d039b6ac23a41a74fb464c4c6e96ee23ff5a95321bb4b0fe"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2f94e6f3c08bd4d229f0550cd74ae5bf",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1007709,
            "upload_time": "2025-07-29T09:36:21",
            "upload_time_iso_8601": "2025-07-29T09:36:21.344277Z",
            "url": "https://files.pythonhosted.org/packages/91/fb/e110c82ac184cb0384628393c3901d650cf102777be57931d9a08db7bd9e/json_tools_rs-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0c21c73398385f0c36cf02c6e2213f7f2ca9d44b5d555cc628d73ee76409b10",
                "md5": "b10e310ce5a8c33f8ad5a0afe463123a",
                "sha256": "c2be6239763a1d4b690a635898b1474373b90a8092ddcec5bdfcd6dae605e5e7"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b10e310ce5a8c33f8ad5a0afe463123a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 876758,
            "upload_time": "2025-07-29T09:36:22",
            "upload_time_iso_8601": "2025-07-29T09:36:22.880766Z",
            "url": "https://files.pythonhosted.org/packages/f0/c2/1c73398385f0c36cf02c6e2213f7f2ca9d44b5d555cc628d73ee76409b10/json_tools_rs-0.1.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "47b58bf464c8ad35b8a83d50d9ea01cf1c2b3011ee9b818c16a98ff696cb1b29",
                "md5": "94135da556bae583ee17eab7c00812b2",
                "sha256": "ae738121ac441bbbddef09b3f2db52a1668283460c430a6e557f6ad64834a2e1"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "94135da556bae583ee17eab7c00812b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 920249,
            "upload_time": "2025-07-29T09:36:24",
            "upload_time_iso_8601": "2025-07-29T09:36:24.084170Z",
            "url": "https://files.pythonhosted.org/packages/47/b5/8bf464c8ad35b8a83d50d9ea01cf1c2b3011ee9b818c16a98ff696cb1b29/json_tools_rs-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "35805c5744bf01572e30d0db06d0953ff4c70a1ae2a9bc8a42386f17cac99013",
                "md5": "ac6f493a204e3756b7581e46c6ca2bdc",
                "sha256": "566e32e5f3c6d1c3f91984ae6ea44bf2ff4cca31b19cba1403ed51d2b5a4774d"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ac6f493a204e3756b7581e46c6ca2bdc",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 855727,
            "upload_time": "2025-07-29T09:36:25",
            "upload_time_iso_8601": "2025-07-29T09:36:25.601920Z",
            "url": "https://files.pythonhosted.org/packages/35/80/5c5744bf01572e30d0db06d0953ff4c70a1ae2a9bc8a42386f17cac99013/json_tools_rs-0.1.0-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c4ae185639827a7d62f1967d37240fb209d46cd709d1a1e3e99391662528432f",
                "md5": "4e92b5dcc5145ee3de697c66ae1c1003",
                "sha256": "a3f71a7fdf907424e88a6b984e051eb949639b7709b82e2725b5e36d4a2a435d"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4e92b5dcc5145ee3de697c66ae1c1003",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 910693,
            "upload_time": "2025-07-29T09:36:26",
            "upload_time_iso_8601": "2025-07-29T09:36:26.909918Z",
            "url": "https://files.pythonhosted.org/packages/c4/ae/185639827a7d62f1967d37240fb209d46cd709d1a1e3e99391662528432f/json_tools_rs-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0a2d3e0c1d5208c1d605fee935e16cd99e964a4966ef17cb91221de1a83918d5",
                "md5": "7d904b9f956656a61f7900152e4ec3a1",
                "sha256": "01bfcf03d53d6331559266ea017cae813573b0b7f2094d7f50444444e47a3791"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7d904b9f956656a61f7900152e4ec3a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1007208,
            "upload_time": "2025-07-29T09:36:28",
            "upload_time_iso_8601": "2025-07-29T09:36:28.370417Z",
            "url": "https://files.pythonhosted.org/packages/0a/2d/3e0c1d5208c1d605fee935e16cd99e964a4966ef17cb91221de1a83918d5/json_tools_rs-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "df67ddf9c7f8ce9a939cc4070b15e045248aba9872ee2a018a00d7a6fa133f24",
                "md5": "1426968dfe27e4915d06f3077915dd55",
                "sha256": "105480df47f5e62468b91b53bb5cab65eae758e854d8b8f9303eff091a067462"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1426968dfe27e4915d06f3077915dd55",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 876192,
            "upload_time": "2025-07-29T09:36:29",
            "upload_time_iso_8601": "2025-07-29T09:36:29.636551Z",
            "url": "https://files.pythonhosted.org/packages/df/67/ddf9c7f8ce9a939cc4070b15e045248aba9872ee2a018a00d7a6fa133f24/json_tools_rs-0.1.0-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3024cdc50c6fa3861268a734bb4c10dec856d3abbf5ce76191164a9468a3eca",
                "md5": "b8dc87fdf7e83f97de91f527ba188b8c",
                "sha256": "244419283ca43c5acc92cb4005757c5f9249ddab26b9a07d2726da2e7ef378b8"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b8dc87fdf7e83f97de91f527ba188b8c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 922026,
            "upload_time": "2025-07-29T09:36:31",
            "upload_time_iso_8601": "2025-07-29T09:36:31.197907Z",
            "url": "https://files.pythonhosted.org/packages/c3/02/4cdc50c6fa3861268a734bb4c10dec856d3abbf5ce76191164a9468a3eca/json_tools_rs-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c86f9d6c34f6600caef8ec4738ef5014a8a47a7b9caef2aa699e25d46bea801d",
                "md5": "09879094a4a9eba04eea769a8946304d",
                "sha256": "bac8e38dd5a8940c891330bdd07f9eec90a58ce8d72c8ab7a6699c4518bcbb0a"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "09879094a4a9eba04eea769a8946304d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 857430,
            "upload_time": "2025-07-29T09:36:33",
            "upload_time_iso_8601": "2025-07-29T09:36:33.288126Z",
            "url": "https://files.pythonhosted.org/packages/c8/6f/9d6c34f6600caef8ec4738ef5014a8a47a7b9caef2aa699e25d46bea801d/json_tools_rs-0.1.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0765f8093afee7913d346f8bf06ff2329a6324c24f102bf8d8df3370e3c0eb6f",
                "md5": "3b2acbbc562fbbd06edf652cf9d363be",
                "sha256": "7458c9375c7792875ecb17449e9b33b07792479367370b5633598b4b29760c17"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3b2acbbc562fbbd06edf652cf9d363be",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 911886,
            "upload_time": "2025-07-29T09:36:34",
            "upload_time_iso_8601": "2025-07-29T09:36:34.418063Z",
            "url": "https://files.pythonhosted.org/packages/07/65/f8093afee7913d346f8bf06ff2329a6324c24f102bf8d8df3370e3c0eb6f/json_tools_rs-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0c0c33bbbd3c875a4a5e51da63f191d82ef5ab864d7a7afb04835abc29021c6e",
                "md5": "d61aad682c2d1eed172c03776784351a",
                "sha256": "99c346b9a896a62841e5a95b82890a29df0d769817dbb80deb6fc37defa58a65"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d61aad682c2d1eed172c03776784351a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1008321,
            "upload_time": "2025-07-29T09:36:36",
            "upload_time_iso_8601": "2025-07-29T09:36:36.666872Z",
            "url": "https://files.pythonhosted.org/packages/0c/0c/33bbbd3c875a4a5e51da63f191d82ef5ab864d7a7afb04835abc29021c6e/json_tools_rs-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a7b9a137eba75589ae4de06314013ae9d27b1d688d9258cffb3c9dfeacc2defa",
                "md5": "f47ac9c5e6e343ce6b1bb11c01ca6dc3",
                "sha256": "96896554e197772c745d733db74b0dc06e2efc28b300ff1cd4b1173d405d32c0"
            },
            "downloads": -1,
            "filename": "json_tools_rs-0.1.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f47ac9c5e6e343ce6b1bb11c01ca6dc3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 877023,
            "upload_time": "2025-07-29T09:36:38",
            "upload_time_iso_8601": "2025-07-29T09:36:38.677382Z",
            "url": "https://files.pythonhosted.org/packages/a7/b9/a137eba75589ae4de06314013ae9d27b1d688d9258cffb3c9dfeacc2defa/json_tools_rs-0.1.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-29 09:36:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "amaye15",
    "github_project": "JSON-Tools-rs",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "json-tools-rs"
}
        
Elapsed time: 0.99599s