Skip to main content

Python bindings for the cJSON-Tools C library

Project description

cJSON-Tools

CI Security Performance PyPI Python License Downloads Documentation

A high-performance C toolkit for transforming and analyzing JSON data with Python bindings. cJSON-Tools provides powerful tools for:

  1. JSON Flattening: Converts nested JSON structures into flat key-value pairs
  2. JSON Schema Generation: Analyzes JSON objects and generates a unified JSON schema
  3. Multi-threading Support: Optimized performance for processing large JSON datasets
  4. Python Bindings: Use the library directly from Python with native C performance

🚀 Quick Start

Python (Recommended)

pip install cjson-tools
import cjson_tools
import json

# Flatten nested JSON
data = {"user": {"name": "John", "address": {"city": "NYC"}}}
flattened = cjson_tools.flatten_json(json.dumps(data))
print(flattened)  # {"user.name": "John", "user.address.city": "NYC"}

# Generate JSON schema
schema = cjson_tools.generate_schema(json.dumps(data))
print(schema)

C Library

git clone https://github.com/amaye15/cJSON-Tools.git
cd cJSON-Tools
make
./bin/json_tools -f input.json

📁 Project Structure

  • c-lib/ - C library source code, headers, and tests
    • src/ - C source files with optimized algorithms
    • include/ - C header files
    • tests/ - Dynamic test suite and benchmarks
  • py-lib/ - Python bindings and related files
    • cjson_tools/ - Python package source
    • tests/ - Python unit tests
    • examples/ - Python usage examples
    • benchmarks/ - Performance testing scripts

✨ Features

🔄 JSON Flattening

  • Dot Notation: Nested objects → address.city
  • Array Indexing: Arrays → skills[0], skills[1]
  • Type Preservation: Maintains strings, numbers, booleans, null
  • Deep Nesting: Handles arbitrarily nested structures
  • Batch Processing: Process thousands of objects efficiently

📋 JSON Schema Generation

  • JSON Schema Draft-07: Standards-compliant schema generation
  • Smart Type Detection: Handles nested objects, arrays, mixed types
  • Required Properties: Automatically detects required vs optional fields
  • Nullable Support: Identifies fields that can be null
  • Array Analysis: Intelligent sampling for large arrays

⚡ Performance Optimizations

  • Multi-threading: Parallel processing for large datasets
  • Memory Pools: Optimized memory allocation for small strings
  • Branch Prediction: Compiler hints for better CPU performance
  • Adaptive Threading: Automatically chooses optimal thread count
  • SIMD Optimizations: Vectorized operations where possible
  • Zero-Copy: Minimal memory copying for better performance

🐍 Python Integration

  • Native Performance: C-speed with Python convenience
  • Pythonic API: Simple, intuitive function calls
  • Type Safety: Proper error handling and validation
  • Memory Management: Automatic cleanup, no memory leaks

📋 Requirements

Python Package (Recommended)

  • Python: 3.6+ (3.8+ recommended)
  • Compiler: Automatically handled by pip
  • Platform: Linux, macOS, Windows

C Library Development

  • Compiler: GCC 7+ or Clang 6+ with C99 support
  • Dependencies: Integrated cJSON (no external dependencies)
  • Threading: POSIX threads (pthread)
  • Build Tools: Make, standard build utilities

Platform-Specific Setup

Ubuntu/Debian

sudo apt-get update
sudo apt-get install build-essential python3-dev

macOS

# Install Xcode Command Line Tools
xcode-select --install
# Or install via Homebrew
brew install python

Windows

  • Install Visual Studio Build Tools or Visual Studio Community
  • Python will automatically detect and use the compiler

🛠️ Installation & Setup

Option 1: Python Package (Recommended)

From PyPI

pip install cjson-tools

From Source

git clone https://github.com/amaye15/cJSON-Tools.git
cd cJSON-Tools/py-lib
pip install -e .  # Development mode
# or
pip install .     # Regular installation

Option 2: C Library Development

Quick Build

git clone https://github.com/amaye15/cJSON-Tools.git
cd cJSON-Tools
make                    # Build optimized version
make debug             # Build debug version

Advanced Build Options

# Clean build
make clean && make

# Install system-wide (optional)
sudo make install

# Build with specific optimizations
CFLAGS="-O3 -march=native" make

# Build tests
cd c-lib/tests
make

Option 3: Development Setup

Full Development Environment

# Clone repository
git clone https://github.com/amaye15/cJSON-Tools.git
cd cJSON-Tools

# Build C library
make

# Setup Python development
cd py-lib
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .

# Run tests
python3 tests/test_cjson_tools.py
cd ../c-lib/tests
./run_dynamic_tests.sh

🚀 Usage Guide

Python API (Recommended)

Basic Operations

import cjson_tools
import json

# Single object flattening
data = {"user": {"name": "John", "details": {"age": 30, "city": "NYC"}}}
flattened = cjson_tools.flatten_json(json.dumps(data))
result = json.loads(flattened)
print(result)  # {"user.name": "John", "user.details.age": 30, "user.details.city": "NYC"}

# Schema generation
schema = cjson_tools.generate_schema(json.dumps(data))
schema_obj = json.loads(schema)
print(schema_obj["properties"])

Batch Processing

# Process multiple objects efficiently
objects = [
    '{"id": 1, "user": {"name": "Alice"}}',
    '{"id": 2, "user": {"name": "Bob", "age": 25}}',
    '{"id": 3, "user": {"name": "Charlie", "location": {"city": "SF"}}}'
]

# Flatten all objects
flattened_batch = cjson_tools.flatten_json_batch(objects)
for flat in flattened_batch:
    print(json.loads(flat))

# Generate unified schema from all objects
unified_schema = cjson_tools.generate_schema_batch(objects)
print(json.loads(unified_schema))

Performance Optimization

# For large datasets, enable multi-threading
large_dataset = [json.dumps({"data": i, "nested": {"value": i*2}}) for i in range(10000)]

# Auto-detect optimal thread count
result = cjson_tools.flatten_json_batch(large_dataset, use_threads=True)

# Specify thread count
result = cjson_tools.flatten_json_batch(large_dataset, use_threads=True, num_threads=4)

# Single-threaded for comparison
result = cjson_tools.flatten_json_batch(large_dataset, use_threads=False)

C Command Line Interface

# JSON Tools - High-performance JSON processing utility
# Usage: json_tools [options] [input_file]

# Options:
#   -h, --help                 Show help message
#   -f, --flatten              Flatten nested JSON (default)
#   -s, --schema               Generate JSON schema
#   -t, --threads [num]        Use multi-threading (auto-detect optimal count)
#   -p, --pretty               Pretty-print output
#   -o, --output <file>        Write to file instead of stdout

C CLI Examples

JSON Flattening

# From file
./bin/json_tools -f input.json

# From stdin with pretty printing
cat input.json | ./bin/json_tools -f -p

# Multi-threaded processing
./bin/json_tools -f -t 4 large_batch.json

# Save to file
./bin/json_tools -f -o flattened.json input.json

Schema Generation

# Generate schema from file
./bin/json_tools -s input.json

# Multi-threaded schema generation
./bin/json_tools -s -t 4 large_batch.json

# Pretty-printed schema to file
./bin/json_tools -s -p -o schema.json input.json

Example Input/Output

JSON Flattening

Input:

{
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  },
  "skills": ["programming", "design"]
}

Output:

{
  "name": "John Doe",
  "age": 30,
  "address.street": "123 Main St",
  "address.city": "Anytown",
  "skills[0]": "programming",
  "skills[1]": "design"
}

JSON Schema Generation

Input:

[
  {
    "id": 1,
    "name": "John",
    "email": "john@example.com",
    "active": true
  },
  {
    "id": 2,
    "name": "Jane",
    "email": "jane@example.com",
    "active": false,
    "tags": ["admin", "user"]
  }
]

Output:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "active": {
      "type": "boolean"
    },
    "tags": {
      "type": ["array", "null"],
      "items": {
        "type": "string"
      }
    }
  },
  "required": ["id", "name", "email", "active"]
}

Performance

The multi-threaded implementation is designed for processing large batches of JSON objects, though our benchmarks show interesting results:

  • For small files: Single-threaded processing is generally more efficient
  • For medium files: Multi-threading shows minimal improvements for specific operations
  • For large files: Current implementation shows thread overhead may outweigh benefits

Benchmarks

The project includes comprehensive benchmarking tools to measure performance:

# Run mini benchmarks (quick demonstration)
cd c-lib/tests
./run_mini_benchmarks.sh

# Run full benchmarks (may take several minutes)
./run_benchmarks.sh

# Generate visualization charts
cd ../../py-lib/benchmarks
python visualize_benchmarks.py

# Generate comprehensive visualization
python visualize_comprehensive_benchmarks.py

Benchmark results are saved to c-lib/tests/benchmark_results.md and c-lib/tests/comprehensive_benchmark_results.md, with visualizations in the corresponding PNG files.

Actual Benchmark Results

Benchmark Charts

Our comprehensive benchmarks revealed:

  • Small files (< 100KB): Multi-threading overhead outweighs benefits, with performance similar to or worse than single-threaded processing
  • Medium files (100KB-1MB): Multi-threading provides minimal improvement (0-12.5%) for schema generation
  • Large files (1MB-10MB): Current multi-threaded implementation shows slight performance degradation (-7% to -8%)

Key findings:

  1. Thread Overhead: For most file sizes, the overhead of creating and managing threads outweighs the benefits of parallel processing.

  2. Optimal Use Case: Multi-threading appears to be most beneficial for medium-sized files (around 1,000 objects) for schema generation.

  3. Future Optimizations: The multi-threaded implementation could be improved with:

    • More efficient work distribution
    • Thread pooling to reduce creation overhead
    • Optimized memory usage to reduce cache misses
    • Adaptive threading that only uses multiple threads when beneficial

For detailed benchmark analysis, see c-lib/tests/comprehensive_benchmark_results.md.

Python Usage

The Python bindings provide a simple, Pythonic interface to the cJSON-Tools library.

Installation

pip install cjson-tools

Examples

Flattening JSON

import json
from cjson_tools import flatten_json

# Flatten a single JSON object
nested_json = '''
{
    "person": {
        "name": "John Doe",
        "age": 30,
        "address": {
            "street": "123 Main St",
            "city": "Anytown",
            "zip": "12345"
        }
    }
}
'''

flattened = flatten_json(nested_json)
print(json.loads(flattened))
# Output: {"person.name": "John Doe", "person.age": 30, "person.address.street": "123 Main St", ...}

Batch Processing

from cjson_tools import flatten_json_batch

# Process multiple JSON objects at once
json_objects = [
    '{"a": {"b": 1}}',
    '{"x": {"y": {"z": 2}}}'
]

flattened_batch = flatten_json_batch(json_objects)
print(flattened_batch)
# Output: ['{"a.b": 1}', '{"x.y.z": 2}']

Schema Generation

from cjson_tools import generate_schema

# Generate a schema from a JSON object
json_obj = '''
{
    "id": 1,
    "name": "Product",
    "price": 29.99,
    "tags": ["electronics", "gadget"]
}
'''

schema = generate_schema(json_obj)
print(json.loads(schema))
# Output: {"type": "object", "properties": {"id": {"type": "number"}, ...}}

Multi-threading

from cjson_tools import flatten_json_batch, generate_schema_batch

# Enable multi-threading with a specific number of threads
flattened = flatten_json_batch(large_json_list, use_threads=True, num_threads=4)

# Auto-detect the optimal number of threads
schema = generate_schema_batch(large_json_list, use_threads=True)

For more examples, see the py-lib/examples directory.

🧪 Testing

Python Tests

cd py-lib

# Run unit tests
python3 tests/test_cjson_tools.py

# Run example script
python3 examples/example.py

# Performance testing
python3 -c "
import cjson_tools
import json
import time

# Quick performance test
data = [json.dumps({'id': i, 'nested': {'value': i*2}}) for i in range(1000)]
start = time.time()
result = cjson_tools.flatten_json_batch(data, use_threads=True)
print(f'Processed {len(data)} objects in {time.time()-start:.3f}s')
"

C Library Tests

cd c-lib/tests

# Run comprehensive dynamic tests
./run_dynamic_tests.sh

# Run specific test sizes
./run_dynamic_tests.sh --sizes "100,1000,10000"

# Build and run manual tests
make
./generate_test_data test.json 1000 3
../../bin/json_tools -f test.json

Benchmarking

# Python benchmarks
cd py-lib/benchmarks
python3 benchmark.py --quick

# C library benchmarks
cd c-lib/tests
./run_benchmarks.sh

# Memory profiling (requires valgrind)
valgrind --tool=memcheck --leak-check=full ../../bin/json_tools -f large_test.json

📦 Publishing & Distribution

Python Package Publishing

Setup for PyPI

cd py-lib

# Install build tools
pip install build twine

# Update version in setup.py
# Edit setup.py: version='1.4.0'

# Build package
python3 -m build

# Test upload to TestPyPI
twine upload --repository testpypi dist/*

# Upload to PyPI
twine upload dist/*

Automated Publishing (GitHub Actions)

# .github/workflows/publish.yml
name: Publish to PyPI
on:
  release:
    types: [published]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.8'
    - name: Build and publish
      env:
        TWINE_USERNAME: __token__
        TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
      run: |
        cd py-lib
        pip install build twine
        python -m build
        twine upload dist/*

C Library Distribution

Creating Release Packages

# Create source distribution
make clean
tar -czf cjson-tools-1.4.0.tar.gz \
  --exclude='.git*' \
  --exclude='*.o' \
  --exclude='bin/*' \
  --exclude='py-lib/build' \
  --exclude='py-lib/*.egg-info' \
  .

# Create binary distribution (Linux)
make clean && make
mkdir -p cjson-tools-1.4.0-linux-x64/{bin,lib,include}
cp bin/json_tools cjson-tools-1.4.0-linux-x64/bin/
cp c-lib/include/*.h cjson-tools-1.4.0-linux-x64/include/
tar -czf cjson-tools-1.4.0-linux-x64.tar.gz cjson-tools-1.4.0-linux-x64/

Package Managers

Homebrew (macOS)
# Formula for Homebrew
class CjsonTools < Formula
  desc "High-performance JSON processing toolkit"
  homepage "https://github.com/amaye15/cJSON-Tools"
  url "https://github.com/amaye15/cJSON-Tools/archive/v1.4.0.tar.gz"
  sha256 "..."

  def install
    system "make"
    bin.install "bin/json_tools"
  end

  test do
    system "#{bin}/json_tools", "--help"
  end
end
APT Repository (Ubuntu/Debian)
# Build .deb package
mkdir -p cjson-tools-1.4.0/DEBIAN
cat > cjson-tools-1.4.0/DEBIAN/control << EOF
Package: cjson-tools
Version: 1.4.0
Architecture: amd64
Maintainer: Your Name <email@example.com>
Description: High-performance JSON processing toolkit
EOF

mkdir -p cjson-tools-1.4.0/usr/bin
cp bin/json_tools cjson-tools-1.4.0/usr/bin/
dpkg-deb --build cjson-tools-1.4.0

� Automated CI/CD Pipeline

This project includes comprehensive GitHub Actions workflows for automated testing, security scanning, performance monitoring, and deployment:

🔄 Continuous Integration (ci.yml)

  • Multi-platform testing: Ubuntu, macOS, Windows
  • Python version matrix: 3.8, 3.9, 3.10, 3.11, 3.12
  • C library testing: Build verification, memory leak detection with Valgrind
  • Python package testing: Installation, functionality, performance validation
  • Code quality: Black formatting, isort, flake8 linting
  • Security scanning: Bandit, Safety dependency checks
  • Integration tests: C CLI with Python validation, consistency checks

🔒 Security & Vulnerability Scanning (security.yml)

  • Dependency scanning: Python package vulnerabilities with Safety
  • Static analysis: CodeQL security analysis for C and Python
  • Container security: Trivy vulnerability scanning
  • License compliance: Automated license checking
  • Memory safety: AddressSanitizer and Valgrind testing
  • Weekly automated scans: Scheduled security monitoring

📊 Performance Monitoring (performance.yml)

  • Automated benchmarks: Multi-platform performance testing
  • Regression detection: Performance validation on PRs
  • Scalability testing: Dataset sizes from 100 to 100K objects
  • Memory efficiency: Memory usage monitoring and optimization
  • Performance visualization: Automated chart generation
  • Benchmark history: Long-term performance tracking

📦 Automated Publishing (publish.yml)

  • Multi-platform wheels: Linux, macOS, Windows (x86_64, ARM64)
  • Source distribution: Complete source package building
  • PyPI publishing: Automated release to PyPI on tags
  • Test PyPI: Optional test publishing for validation
  • GitHub releases: Automated release asset creation
  • Trusted publishing: Secure PyPI publishing with OIDC

📚 Documentation (docs.yml)

  • API documentation: Automated C and Python API docs
  • Usage examples: Comprehensive example generation
  • Performance guides: Optimization documentation
  • GitHub Pages: Automated documentation deployment
  • Release validation: Version consistency checking

🎯 Workflow Features

Quality Assurance:

  • ✅ Comprehensive test coverage across platforms and Python versions
  • ✅ Memory leak detection with Valgrind
  • ✅ Security vulnerability scanning
  • ✅ Performance regression detection
  • ✅ Code quality enforcement

Automation:

  • 🔄 Automatic testing on every PR and push
  • 📦 Automated PyPI publishing on releases
  • 📊 Weekly performance and security monitoring
  • 📚 Automatic documentation updates
  • 🏷️ Badge updates for README

Security:

  • 🔒 CodeQL static analysis
  • 🛡️ Container security scanning
  • 📋 License compliance monitoring
  • 🔍 Dependency vulnerability tracking
  • 🧪 Memory safety validation

Performance:

  • ⚡ Multi-platform benchmarking
  • 📈 Performance visualization
  • 🎯 Regression detection
  • 💾 Memory efficiency monitoring
  • 📊 Throughput analysis

🚀 Getting Started with CI/CD

  1. Fork the repository and enable GitHub Actions
  2. Configure secrets for PyPI publishing (if needed)
  3. Create a release to trigger automated publishing
  4. Monitor workflows in the Actions tab

The CI/CD pipeline ensures high code quality, security, and performance while automating the entire release process from development to production deployment.

�🔧 Development & Contributing

Development Setup

# Full development environment
git clone https://github.com/amaye15/cJSON-Tools.git
cd cJSON-Tools

# Setup pre-commit hooks
pip install pre-commit
pre-commit install

# Build everything
make clean && make
cd py-lib && pip install -e . && cd ..

# Run all tests
cd c-lib/tests && ./run_dynamic_tests.sh && cd ../..
cd py-lib && python3 tests/test_cjson_tools.py && cd ..

Code Quality

# C code formatting (if clang-format available)
find c-lib -name "*.c" -o -name "*.h" | xargs clang-format -i

# Python code formatting
cd py-lib
pip install black isort flake8
black .
isort .
flake8 .

Performance Profiling

# Profile C library
cd c-lib/tests
perf record ../../bin/json_tools -f large_test.json
perf report

# Profile Python extension
cd py-lib
python3 -m cProfile -o profile.stats examples/example.py
python3 -c "import pstats; pstats.Stats('profile.stats').sort_stats('cumulative').print_stats(20)"

📄 License

This project is open source and available under the MIT License.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

Areas for Contribution

  • Performance optimizations
  • Additional output formats
  • Language bindings (Rust, Go, etc.)
  • Documentation improvements
  • Bug fixes and testing

📞 Support

  • Issues: GitHub Issues
  • Documentation: See py-lib/examples/ and c-lib/tests/
  • Performance: Run benchmarks with ./run_dynamic_tests.sh

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cjson-tools-1.6.0.tar.gz (23.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cjson_tools-1.6.0-cp312-cp312-win_amd64.whl (35.7 kB view details)

Uploaded CPython 3.12Windows x86-64

cjson_tools-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl (135.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cjson_tools-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cjson_tools-1.6.0-cp312-cp312-macosx_11_0_arm64.whl (39.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cjson_tools-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl (41.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cjson_tools-1.6.0-cp311-cp311-win_amd64.whl (35.6 kB view details)

Uploaded CPython 3.11Windows x86-64

cjson_tools-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl (135.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cjson_tools-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cjson_tools-1.6.0-cp311-cp311-macosx_11_0_arm64.whl (39.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cjson_tools-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl (41.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cjson_tools-1.6.0-cp310-cp310-win_amd64.whl (35.6 kB view details)

Uploaded CPython 3.10Windows x86-64

cjson_tools-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl (133.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cjson_tools-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cjson_tools-1.6.0-cp310-cp310-macosx_11_0_arm64.whl (39.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cjson_tools-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl (41.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

cjson_tools-1.6.0-cp39-cp39-win_amd64.whl (35.6 kB view details)

Uploaded CPython 3.9Windows x86-64

cjson_tools-1.6.0-cp39-cp39-musllinux_1_2_x86_64.whl (133.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cjson_tools-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cjson_tools-1.6.0-cp39-cp39-macosx_11_0_arm64.whl (39.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

cjson_tools-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl (41.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

cjson_tools-1.6.0-cp38-cp38-win_amd64.whl (35.6 kB view details)

Uploaded CPython 3.8Windows x86-64

cjson_tools-1.6.0-cp38-cp38-musllinux_1_2_x86_64.whl (133.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

cjson_tools-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cjson_tools-1.6.0-cp38-cp38-macosx_11_0_arm64.whl (39.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

cjson_tools-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl (41.3 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file cjson-tools-1.6.0.tar.gz.

File metadata

  • Download URL: cjson-tools-1.6.0.tar.gz
  • Upload date:
  • Size: 23.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cjson-tools-1.6.0.tar.gz
Algorithm Hash digest
SHA256 b1727d6d7b6a6f64763c63ebcac1cb7eb1fa221a71b9d98911358e1e02b3db90
MD5 daae02d8a806ac25e02185ead4b68ab2
BLAKE2b-256 11dad8722a92db2395e6fb466019a3d86900a8608d0523872a85597adb620c9f

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cdf8372f4c30375ca42ec945e280326331fecce9b6f0d66634861a92e741957d
MD5 72952d3e6c052b048a2fca99f10653f2
BLAKE2b-256 bad1a648eb710305fb2eb4345ed034a72882e8617bebf94bb284a40884878ca5

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c9f687e84aed3480fe7ec69ba37bb2eb92d251e47103f2a6fb8b76cc1b423a9e
MD5 a6301d2a18910ffa31663eb432ecc9c8
BLAKE2b-256 a16bd7ba74cdba43a1e362458a4e26d397f16061f730b9c292e4b50c1f66a7bb

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c6efe91a2382992d17c116b93c5daa814826346af78493e9c70a401fd11547c0
MD5 ca21f0f0d7c5084a312ce9a0d484d0ef
BLAKE2b-256 52a647a8e38ae5f4f19ca8caeed238b4445ef62fc9bcd6a7448ae4c9068e9f17

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbd0bd903f8629208e1a0e2e771fb71d07e133c52c3ce4f995e5068d22f7f685
MD5 39599126b400e5fbe93893c8f8c0a852
BLAKE2b-256 1d3e2a1879fc9105255e80d18e180ac333c22f578eec9f00edf28a0c10ab5318

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 eb4f0b90927da3dfc2a92493f2974b318b765e6413b6eb5feace6aca47c8495a
MD5 d182e8d35fb02e198db605f8d1e7e647
BLAKE2b-256 d51af3809d9ebaf668dd5dbae9e7b911a64067e5064b61c745ecfe51331e124f

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 714f79d486504d1b9d46573767580373ea8f4318b110cc39970bdea8236e3f96
MD5 70df00d8a6673dfca7d2d41db7b91c6d
BLAKE2b-256 8e7dd4b5fb08782c239ae9a3c121a963a0bfe1353edb398e16799bcd733f99b8

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2351aa252abafeacaeced76140e60862f7e7b3a2c8396b2441ab221dd144a1dd
MD5 61685ae9196d87d981b72d402dbb0674
BLAKE2b-256 d8e8e82ec0dd24b96da284b944bade39f985f70a1600eb26ba00a81530458246

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8fd7d4c419ad8634ce242ab402b563fdbdaa0747d993938fc22b0ba128d5a00
MD5 66296cda9707c1804491daa75d1df7fb
BLAKE2b-256 30a049f76a4507cfe3d9a06c9d932dca98f24bd79a67d58381c32f0bb23b523b

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0de631e2e3866b02c4ee6b6d2e45364626b7a47d796697195ec94e6c500928b0
MD5 c95f13ccb5bf5948f26a933c3a43f9ac
BLAKE2b-256 b756b10fd1c708e29cd931b05524dcc49f04a4b04d6c11aa0ea0a0009d47795f

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4a37131423181c7df08018f670ba1a83995a9abfc33faa9859485cf6270cefa2
MD5 aa5a2cdd8110f9ee58d0ca053dca168c
BLAKE2b-256 aae47b8bbe553c60a35a5f8092ceab5134339f07342eee8684c0dd27cb283ad2

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7ef28e4744cd0227c234b1b11542c2b43dcdb38b45faba2bb62cb94ca69a423c
MD5 bd905544c2867aa8ea4e40d765fb3729
BLAKE2b-256 b49a19e162f2c7a4f45f8dc002ea2e41d34608fefca9d169e0b9c03e15b33a45

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2fa702d63010b70363364f863578e98ef047bfaf067124cfa240e28d05c38f9
MD5 f82ce17a54b600ed6bb2b135e1232c4c
BLAKE2b-256 80b40b29fa43e62fe90c68ad39596f2524f8b784ff03ae8c3f9ccf02b3e8b48f

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0aebbb1bb6f51f10a27e826e0c7a8354cea4f53e020233c78999a8bd1b3fefe
MD5 72a32bf79ff2121607b27638a33c9299
BLAKE2b-256 6d1dad695e31cb048767af004dc3fe4efc30ba25f15b9bdd39e9fc23f4bf7ce8

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89aac5e721eff3d3215eeb8aa95c7e76617610be4a4af079ee12413c2cd3ca33
MD5 8e99b88fffc2e6fff3fb4ebc966ed285
BLAKE2b-256 3ddd57641f212e2e57644550d19a0416e236281d680df16564b1257e90bddbe8

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6acd6c3c1140579034dbc8d199317a555520bec50f6f3f071bfaddfb4136e089
MD5 0ca5b983c6280efd1df8170e798fb02c
BLAKE2b-256 2bf80d4c273212a41ac13e29006387d7a494de6697ec1209c263f82ca0a3815a

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cjson_tools-1.6.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cjson_tools-1.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2a0ddfa4cb8435e102aa18e78b1a6d5587857eaee4a9fc12dc6b49ae6f5ae395
MD5 466e31c603e7214c92fceb5249ec503a
BLAKE2b-256 2bbb409d9e4e574bae12e396ec08e707d9010fd30d84301c91c693afa47b7e7a

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 99d1eff1d0c265321e9540434114cc139a58d038ad102e7813093bf472e7a6fe
MD5 fdf75507cfedfc6d5b3fe67127a64fc5
BLAKE2b-256 136e85938df6d21df747a5c16d3c62d3d2653250d122815973df5413b7b29702

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dcc7bd7e4352378a23ae790dead929343f04c195eb3988c1701a2e7610f8465d
MD5 8748f500b825ba21c6b7a2a6540449ba
BLAKE2b-256 ace4e7497db279f0d725c694b4b857bf1325720bf5e94f529b74820d646bae3e

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1d1c6ae942ad3dae9ba564e629503f3237cf033364592b4a3a8c9679b32c688
MD5 2f5204306d6c3bb9862e6a6966330726
BLAKE2b-256 ab55df5fd85fdf8227dd178a55fef6035fec2c236c79165a3c2477cb944539e5

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 61b86a3f0ab95af71ee5c78146b2ae688103d3d07e53767b1812f8f4d7d4a38a
MD5 25e560d0e1923ea0075ce09c056f4181
BLAKE2b-256 fde6e262a7ae76741785688652977c334d4ba6fa7713f77a9a69f9d4d93c9a4d

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cjson_tools-1.6.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cjson_tools-1.6.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c74bc0ad7cf434401777dd370b3c2de6f2b39de9fe866a1d163d6ff3bb87f1c5
MD5 040d77ac95b35f0e45d7f8bc36016cf5
BLAKE2b-256 c6c6bf185364f56d57e5fd7727301e365c987179c746f4c90cf2fc1629a48d3c

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a390aa128d835a4dbcc9fa9d6a7cf34ce4b3c217ff51183427773f21c6c6d7f8
MD5 e63e65609eff7d804bed08a7df3cfe26
BLAKE2b-256 65f2c4960a924723f08f4828cd48609fd643f7762792b5bb72c9c90d9be02791

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1fc2c1054a7afae74096f9cb33abd83052412999ad35ebd0d58958d19fade759
MD5 c7fd329b51b39a781d2eff7434302b6f
BLAKE2b-256 de12ae59240bc04cd9a347459698b985ae1d0a66eae762401718162847f08c46

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa4009882ab3474cfb02b13f71fcb06bf6f7a53731886fab3c2bb2df9408d4f0
MD5 a0439a1ade6da1bd3245e5dfd1353f62
BLAKE2b-256 4d416c6ca4cd119c1b4a4e3ab932707628f4f80320cdd492ca3ea41e6d82678d

See more details on using hashes here.

File details

Details for the file cjson_tools-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjson_tools-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2ad8433e8310ffe029b00b09e903422b6866d28ceec04eb77f9242a757fd0e4
MD5 315ab22099f10d1c27ea14fcdf7ad457
BLAKE2b-256 502864f8b09b027d3109d01c5e377b4627cb789ae2b102c98c6c95a9494bc33b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page