Skip to main content

High-performance Python bindings for JSON flattening, path type analysis, and schema generation

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. Path Type Analysis: Get flattened paths with their data types for schema discovery
  3. JSON Schema Generation: Analyzes JSON objects and generates a unified JSON schema
  4. Multi-threading Support: Optimized performance for processing large JSON datasets
  5. Performance Optimized: SIMD instructions, memory pools, and cache-friendly algorithms
  6. 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"}, "tags": ["dev", "python"]}}
flattened = cjson_tools.flatten_json(json.dumps(data))
print(flattened)  # {"user.name": "John", "user.address.city": "NYC", "user.tags[0]": "dev", "user.tags[1]": "python"}

# Get flattened paths with data types
paths_with_types = cjson_tools.get_flattened_paths_with_types(json.dumps(data))
print(paths_with_types)  # {"user.name": "string", "user.address.city": "string", "user.tags[0]": "string", "user.tags[1]": "string"}

# 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"])

Path Type Analysis

# Get flattened paths with their data types
data = {
    "user": {
        "name": "John",
        "age": 30,
        "tags": ["developer", "python"],
        "address": {
            "coordinates": [40.7128, -74.0060],
            "city": "New York"
        },
        "active": True,
        "metadata": None
    }
}

# Analyze path types
paths_with_types = cjson_tools.get_flattened_paths_with_types(json.dumps(data))
result = json.loads(paths_with_types)

# Output shows each flattened path with its data type:
# {
#   "user.name": "string",
#   "user.age": "integer",
#   "user.tags[0]": "string",
#   "user.tags[1]": "string",
#   "user.address.coordinates[0]": "number",
#   "user.address.coordinates[1]": "number",
#   "user.address.city": "string",
#   "user.active": "boolean",
#   "user.metadata": "null"
# }

# Perfect for data analysis and schema discovery!
for path, data_type in result.items():
    print(f'"{path}": "{data_type}"')

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.7.0.tar.gz (25.6 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.7.0-cp312-cp312-win_amd64.whl (37.5 kB view details)

Uploaded CPython 3.12Windows x86-64

cjson_tools-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl (141.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cjson_tools-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (145.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cjson_tools-1.7.0-cp312-cp312-macosx_11_0_arm64.whl (41.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cjson_tools-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl (43.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cjson_tools-1.7.0-cp311-cp311-win_amd64.whl (37.5 kB view details)

Uploaded CPython 3.11Windows x86-64

cjson_tools-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl (141.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cjson_tools-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (145.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cjson_tools-1.7.0-cp311-cp311-macosx_11_0_arm64.whl (41.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cjson_tools-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl (43.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cjson_tools-1.7.0-cp310-cp310-win_amd64.whl (37.5 kB view details)

Uploaded CPython 3.10Windows x86-64

cjson_tools-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl (140.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cjson_tools-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cjson_tools-1.7.0-cp310-cp310-macosx_11_0_arm64.whl (41.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cjson_tools-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl (43.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

cjson_tools-1.7.0-cp39-cp39-win_amd64.whl (37.5 kB view details)

Uploaded CPython 3.9Windows x86-64

cjson_tools-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl (140.6 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cjson_tools-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cjson_tools-1.7.0-cp39-cp39-macosx_11_0_arm64.whl (41.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

cjson_tools-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl (43.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

cjson_tools-1.7.0-cp38-cp38-win_amd64.whl (37.4 kB view details)

Uploaded CPython 3.8Windows x86-64

cjson_tools-1.7.0-cp38-cp38-musllinux_1_2_x86_64.whl (140.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

cjson_tools-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cjson_tools-1.7.0-cp38-cp38-macosx_11_0_arm64.whl (41.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

cjson_tools-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl (43.3 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: cjson-tools-1.7.0.tar.gz
  • Upload date:
  • Size: 25.6 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.7.0.tar.gz
Algorithm Hash digest
SHA256 c35d1720d60020483941f69e07cef90d1738688c2b848849f342d13cbe15fb9a
MD5 fb52ea99a9d2bdba91f49d544a8289b0
BLAKE2b-256 ee6ee7da3a80368324033d5841ba1c97174ec9732278165f7bb448ab25cf30c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9e7434ab74da2d6765a7c8bbab30330a5a09a12a6409b86c3b0f44606db90193
MD5 d58cd11816ba151ba31b410cbb44bc51
BLAKE2b-256 e9e6d84c96ad34bc9381d643fdfd826123f73802867bf70da24ba3d28138af1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7d350d69fa1c3f5e0878cdb915cc5bc9bbfc867a79fc99830dacf0f07dbf7ac4
MD5 72e0a34a7d7ead31bcf18a834ab0b2b4
BLAKE2b-256 63dd794e3d42979be0f2795bfcc09ae23b881dd32fffa54e0d09076f2828847b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0fa314dfa37d251f02ef36e7031bd90bd5c4084aa50ceb94b581a7434906cbce
MD5 c655f0097299ff59dd82441761522c6e
BLAKE2b-256 d4515dd4a0695c32a4bc1dbc8e91f997f2c51f52ab3398c6645b538fc28960a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 081cb6deafda38324943a1818933965b8f5f4a672594cfaaccf62d8c9724beb3
MD5 1d876bbfac2fc7457bb4371b71eb45e3
BLAKE2b-256 9bf2f4471a016471ca799f93c326610c2bd3373c3b097fd0521b8e7e048b4db4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1531eaedd0f33ee4edd91819b9d0b2e5ee92ea60a5829fda4cc1c178ce322d32
MD5 2310102251c73a9fd159da40a50f7b59
BLAKE2b-256 3261feba502e104625b5c18c146f0135c0425864a2a7ebeadb245806c60fdff6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a94fd2d3067fc81544cb08bb7a150cb923fc9a731ec350a639b93a5d89f8a1fe
MD5 12f4b44c0ada91b0e183d34ec2453773
BLAKE2b-256 0c22a218b99b1283d190a231c9140a31f7cdd6e17db469b7ac4737dd68d69d21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 da58a5e48a8edb9c7005ffb70b6a3f586e88dc13a2e31a61732be252b4f23b08
MD5 2645491122104f39556b4fe8c36b9fca
BLAKE2b-256 edee04c274e7501b4cfbb9764faad61e2231c7db5eb74c1ff2efa75163b6b317

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 105e268bac5b048c29b68074965e8b3528a1258f423eaa9c5ec6b9bcb6bc6381
MD5 7e4a3f73edec9ffb068021802ced8f9d
BLAKE2b-256 a94df032750eccbf79362f93a5fe163707401e6bebf99ae308840e7cc019c425

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9dd4c3e3c41c1d3edaaf6465eed5379e4c724680fd81dcdc4a87ab30626298ff
MD5 865ebf622d9837e9be1b88884514e465
BLAKE2b-256 b82b01b9ee250a01af8494309a731deb8d329d1297915dea1cedf93a9b6515db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c1737dbc2599353e7f6db511fe5ccd29432e47fbc4f07cdd036b0f52d10f2953
MD5 c9c5ca0de654edeb4b78526d130565d1
BLAKE2b-256 4d2e21ca8b5905b8958c201bb9c758031c2550d4d314ec492c6dc6b8dbcbf833

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 847588edddaed6c0dc5fa619412a9b8493c1156025fe4c1e87ea504f5deafea4
MD5 575dc020e5c4530f5abbb39e35cfb67a
BLAKE2b-256 439e5c32ed25bc3615774e6644c5c78562079faf247f2c0a67fc67333829dea3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ebc1cafe108fb938384a10d77d7b0dbe9ea2d8c88d1359769f64521e5c9f63b0
MD5 bda423484750846ebc112f9d3a9599a3
BLAKE2b-256 3ca8e7360104fd9aba90579732e5a7fd0bac9904eb7a4c9383851a7d979dd0b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc2b48300a8c0413736f0683fafb898e4107dca49f897cea8451b3af71d72ca8
MD5 45fe8df0b8279f6866ebbae7e95a0b47
BLAKE2b-256 2ad9d9a264b4b520619422298be7d42f8ee109988b2750637ea8be45e8a4e5ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58cfa425bca347df99a657e1a649766485a8f7ab82d40aa7bd54846bf02f0c5e
MD5 1147eeb4f7ab0a50404a0a1cdad0d81f
BLAKE2b-256 adbea2ba86580c43968d3014a207b1c72682640c9d7d407ec61d3f5df6e1b3c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f8c53caec17c9e3285c8c9203a354b8d5d260bb9a8f15728503905c455fd975
MD5 559ac8a6da642973070522ed8378817c
BLAKE2b-256 5131081112517772b93b51f0d5c794a958be3a308ee115b57007701f02a534ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjson_tools-1.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 37.5 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.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 eeec4093bf3b7f2e259e41d7d06f2fbda2cb665d3bf6c28ebfc44d5879ee02ef
MD5 dcd8022624ee4c09a01788630be7a6d4
BLAKE2b-256 facbf4a91f52208aaa447678a5a5bcdec0e77113d461fb88d7591641a15b4330

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 af9c5084e46ff8fc824ebea58527d2f8cdcde0667dd937ac1bc21021a4e14d32
MD5 aa0c2e8ae4795064babc419e54b0a2e5
BLAKE2b-256 c3ba522ef37f44120eb0427123c8d0a9cef9ad4ef2f0c81e38fd4426871306e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a656d5b8aed9274622f7bc2a76051777cc1c48bafe115ccd3f6cb5832e94b106
MD5 ad88aa0b0b86208abc505f476462e265
BLAKE2b-256 22a81e120620877e10626353b1628648354ee872128b84cd90274402d6f320bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d524ccc0b4365a9e234eccc40a06bdfc5a734f72dd113ea80f8f9bf27e109d63
MD5 01268e05dc106706226802b58d4f0dc1
BLAKE2b-256 b62a6a1e612c4589d297438b2b932a2aa7489a6409280bf1a2fa667c85537259

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b57f02864c86a6af275cf4b3ae46f5ea348926c141f4311c032c16157c90bc3
MD5 68c8df2d05bcd7995faf6235deaa3d1f
BLAKE2b-256 cff61452161875bbd669b9f213be85e89838b10a5a788821f04107f28b2c9df9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjson_tools-1.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 37.4 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.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a098d02a8e73c0b83052960957fea39fea4141b979b82717c7e1c6976163f0c3
MD5 f1dac9c8d730e12c80b1cf4008dc5509
BLAKE2b-256 8ee70bbbd1666e41436b458956d13ec08c600b905697b40da99c2034fccba43e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ca1b3e2c2bee4fa8d94b1b2f5abe8591da51156ba771ffa0bc6ebd545d9ca798
MD5 c998fee692f5625501ff82aa19bbd04e
BLAKE2b-256 666b5d6d9230a72707cae24998895b364dfc51d3ec53b42bb4b07adcd2d2a1d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 639871dcb025b5890c0183ded5a25ccad62b93670580cad210ed68fdc588bf9d
MD5 341ceba461243b39ae2a0cea8a74214d
BLAKE2b-256 f478a737fd06eee1be5cc446bd83afa7a958684d24cfa0d0f151f60ae6da1d73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 072b2d7b027150e34946d2eb69c4428effb2bf61d5c5cceb3c4babbdacf67d41
MD5 2b260523b518159d04c82319cbcab1cc
BLAKE2b-256 780d46a01777106880e0b54b2eb1c7cc33afebe3acf07323db5bbe858d13df87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjson_tools-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1105ed689959c848391742d7100557a8cbbfa543f350dcf7e6dcd3a878bbfb7d
MD5 4c90dd7fb73508e47331c0c02b08843c
BLAKE2b-256 da3d07d34b9dcda9f7535cccb2003e909abd36276f4e18e9e58565196037baea

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