huffmanfile


Namehuffmanfile JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://github.com/ybubnov/libhuffman
SummaryPython bindings for libhuffman
upload_time2024-02-24 20:41:23
maintainer
docs_urlNone
authorYasha Bubnov
requires_python
license
keywords huffman encoding decoding compression
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # libhuffman - The Huffman coding library

The Huffman library is a simple, pure C library for encoding and decoding data using a
frequency-sorted binary tree.
The implementation of this library is pretty straightforward, additional information
regarding Huffman coding could be gained from the [Wikipedia](https://en.wikipedia.org/wiki/Huffman_coding).

## Installation

The build mechanism of the library is based on the [CMake](https://cmake.org) tool, so
you could easily install it on your distribution in the following way:
```bash
$ sudo cmake install
```

By default the command above install the library into `/usr/local/lib` and all
required headers into `/usr/local/include`. The installation process is organized
using CMake. Just create a new directory `build` and generate required makefiles:
```bash
$ mkdir -p build
$ cmake ..
```

After that run the `install` target:
```bash
$ make install
```

## Usage

### Encoding

To encode the data, use either a file stream `huf_fdopen` or `huf_memopen` to use
an in-memory stream. Consider the following example, where the input is a memory
stream and output of the encoder is also memory buffer of 1MiB size.
```c
void *bufin, *bufout = NULL;
huf_read_writer_t *input, *output = NULL;

// Allocate the necessary memory.
huf_memopen(&input, &bufin, HUF_1MIB_BUFFER);
huf_memopen(&output, &bufout, HUF_1MIB_BUFFER);

// Write the data for encoding to the input.
size_t input_len = 10;
input->write(input->stream, "0123456789", input_len);
```

Create a configuration used to encode the input string using Huffman algorithm:
```c
huf_config_t config = {
   .reader = input,
   .length = input_len,
   .writer = output,
   .blocksize = HUF_64KIB_BUFFER,
};

huf_error_t err = huf_encode(&config);
printf("%s\n", huf_error_string(err));
```

- `reader` - input ready for the encoding.
- `writer` - output for the encoded data.
- `length` - length of the data in bytes to encode.
- `blocksize` - the length of each chunk in bytes (instead of reading the file twice
`libhuffman` reads and encodes data by blocks).
- `reader_buffer_size` - this is opaque reader buffer size in bytes, if the buffer size
is set to zero, all reads will be unbuffered.
- `writer_buffer_size` - this is opaque writer buffer size ib bytes, if the buffer size
is set to zero, all writes will be unbuffered.

After the encoding, the output memory buffer could be automatically scaled to fit all
necessary encoded bytes. To retrieve a new length of the buffer, use the following:
```c
size_t out_size = 0;
huf_memlen(output, &out_size);

// The data is accessible through the `bufout` variable or using `read` function:
uint8_t result[10] = {0};
size_t result_len = 10;

// result_len is inout parameter, and will contain the length of encoding
// after the reading from the stream.
output->read(output->stream, result, &result_len);
```

### Decoding

Decoding is similar to the encoding, except that reader attribute of the configuration
should contain the data used to decode:
```c
input->write(input->stream, decoding, decoding_len);

huf_config_t config = {
    .reader = input,
    .length = input_len,
    .writer = output,
    .blockize = HUF_64KIB_BUFFER,
};


// After the decoding the original data will be writter to the `output`.
huf_decode(&config);
```

### Resource Deallocation

Once the processing of the encoding is completed, consider freeing the allocated memory:
```c
// This does not free underlying buffer, call free for the buffer.
huf_memclose(&mem_out);

free(buf);
```

For more examples, please, refer to the [`tests`](tests) directory.

## Python Bindings

Python bindings for `libhuffman` library are distributed as PyPI package, to install
that package, execute the following command:
```sh
pip install huffmanfile
```

You can use the `libhuffman` for performant compression and decompression of Huffman
encoding. The interface of the Python library is similar to the interface of the
[`bz2`](https://docs.python.org/3/library/bz2.html) and
[`lzma`](https://docs.python.org/3/library/lzma.html) packages from Python's standard
library.

### Examples of usage

Reading in a compressed file:
```py
import huffmanfile
with huffmanfile.open("file.hm") as f:
    file_content = f.read()
```

Creating a compressed file:
```py
import huffmanfile
data = b"Insert Data Here"
with huffmanfile.open("file.hm", "w") as f:
    f.write(data)
```

Compressing data in memory:
```py
import huffmanfile
data_in = b"Insert Data Here"
data_out = huffmanfile.compress(data_in)
```

Incremental compression:
```py
import huffmanfile
hfc = huffmanfile.HuffmanCompressor()
out1 = hfc.compress(b"Some data\n")
out2 = hfc.compress(b"Another piece of data\n")
out3 = hfc.compress(b"Even more data\n")
out4 = hfc.flush()
# Concatenate all the partial results:
result = b"".join([out1, out2, out3, out4])
```

Note, random data tends to compress poorly, while ordered, repetitive data usually
yields a high compression ratio.

## License

The Huffman library is distributed under MIT license, therefore you are free to do with
code whatever you want. See the [LICENSE](LICENSE) file for full license text.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ybubnov/libhuffman",
    "name": "huffmanfile",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "huffman,encoding,decoding,compression",
    "author": "Yasha Bubnov",
    "author_email": "girokompass@gmail.com",
    "download_url": "",
    "platform": null,
    "description": "# libhuffman - The Huffman coding library\n\nThe Huffman library is a simple, pure C library for encoding and decoding data using a\nfrequency-sorted binary tree.\nThe implementation of this library is pretty straightforward, additional information\nregarding Huffman coding could be gained from the [Wikipedia](https://en.wikipedia.org/wiki/Huffman_coding).\n\n## Installation\n\nThe build mechanism of the library is based on the [CMake](https://cmake.org) tool, so\nyou could easily install it on your distribution in the following way:\n```bash\n$ sudo cmake install\n```\n\nBy default the command above install the library into `/usr/local/lib` and all\nrequired headers into `/usr/local/include`. The installation process is organized\nusing CMake. Just create a new directory `build` and generate required makefiles:\n```bash\n$ mkdir -p build\n$ cmake ..\n```\n\nAfter that run the `install` target:\n```bash\n$ make install\n```\n\n## Usage\n\n### Encoding\n\nTo encode the data, use either a file stream `huf_fdopen` or `huf_memopen` to use\nan in-memory stream. Consider the following example, where the input is a memory\nstream and output of the encoder is also memory buffer of 1MiB size.\n```c\nvoid *bufin, *bufout = NULL;\nhuf_read_writer_t *input, *output = NULL;\n\n// Allocate the necessary memory.\nhuf_memopen(&input, &bufin, HUF_1MIB_BUFFER);\nhuf_memopen(&output, &bufout, HUF_1MIB_BUFFER);\n\n// Write the data for encoding to the input.\nsize_t input_len = 10;\ninput->write(input->stream, \"0123456789\", input_len);\n```\n\nCreate a configuration used to encode the input string using Huffman algorithm:\n```c\nhuf_config_t config = {\n   .reader = input,\n   .length = input_len,\n   .writer = output,\n   .blocksize = HUF_64KIB_BUFFER,\n};\n\nhuf_error_t err = huf_encode(&config);\nprintf(\"%s\\n\", huf_error_string(err));\n```\n\n- `reader` - input ready for the encoding.\n- `writer` - output for the encoded data.\n- `length` - length of the data in bytes to encode.\n- `blocksize` - the length of each chunk in bytes (instead of reading the file twice\n`libhuffman` reads and encodes data by blocks).\n- `reader_buffer_size` - this is opaque reader buffer size in bytes, if the buffer size\nis set to zero, all reads will be unbuffered.\n- `writer_buffer_size` - this is opaque writer buffer size ib bytes, if the buffer size\nis set to zero, all writes will be unbuffered.\n\nAfter the encoding, the output memory buffer could be automatically scaled to fit all\nnecessary encoded bytes. To retrieve a new length of the buffer, use the following:\n```c\nsize_t out_size = 0;\nhuf_memlen(output, &out_size);\n\n// The data is accessible through the `bufout` variable or using `read` function:\nuint8_t result[10] = {0};\nsize_t result_len = 10;\n\n// result_len is inout parameter, and will contain the length of encoding\n// after the reading from the stream.\noutput->read(output->stream, result, &result_len);\n```\n\n### Decoding\n\nDecoding is similar to the encoding, except that reader attribute of the configuration\nshould contain the data used to decode:\n```c\ninput->write(input->stream, decoding, decoding_len);\n\nhuf_config_t config = {\n    .reader = input,\n    .length = input_len,\n    .writer = output,\n    .blockize = HUF_64KIB_BUFFER,\n};\n\n\n// After the decoding the original data will be writter to the `output`.\nhuf_decode(&config);\n```\n\n### Resource Deallocation\n\nOnce the processing of the encoding is completed, consider freeing the allocated memory:\n```c\n// This does not free underlying buffer, call free for the buffer.\nhuf_memclose(&mem_out);\n\nfree(buf);\n```\n\nFor more examples, please, refer to the [`tests`](tests) directory.\n\n## Python Bindings\n\nPython bindings for `libhuffman` library are distributed as PyPI package, to install\nthat package, execute the following command:\n```sh\npip install huffmanfile\n```\n\nYou can use the `libhuffman` for performant compression and decompression of Huffman\nencoding. The interface of the Python library is similar to the interface of the\n[`bz2`](https://docs.python.org/3/library/bz2.html) and\n[`lzma`](https://docs.python.org/3/library/lzma.html) packages from Python's standard\nlibrary.\n\n### Examples of usage\n\nReading in a compressed file:\n```py\nimport huffmanfile\nwith huffmanfile.open(\"file.hm\") as f:\n    file_content = f.read()\n```\n\nCreating a compressed file:\n```py\nimport huffmanfile\ndata = b\"Insert Data Here\"\nwith huffmanfile.open(\"file.hm\", \"w\") as f:\n    f.write(data)\n```\n\nCompressing data in memory:\n```py\nimport huffmanfile\ndata_in = b\"Insert Data Here\"\ndata_out = huffmanfile.compress(data_in)\n```\n\nIncremental compression:\n```py\nimport huffmanfile\nhfc = huffmanfile.HuffmanCompressor()\nout1 = hfc.compress(b\"Some data\\n\")\nout2 = hfc.compress(b\"Another piece of data\\n\")\nout3 = hfc.compress(b\"Even more data\\n\")\nout4 = hfc.flush()\n# Concatenate all the partial results:\nresult = b\"\".join([out1, out2, out3, out4])\n```\n\nNote, random data tends to compress poorly, while ordered, repetitive data usually\nyields a high compression ratio.\n\n## License\n\nThe Huffman library is distributed under MIT license, therefore you are free to do with\ncode whatever you want. See the [LICENSE](LICENSE) file for full license text.\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Python bindings for libhuffman",
    "version": "1.0.3",
    "project_urls": {
        "Homepage": "https://github.com/ybubnov/libhuffman"
    },
    "split_keywords": [
        "huffman",
        "encoding",
        "decoding",
        "compression"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5da0d1fcca16364ab29573da5364a0ee30fe44add887fdfea42351b0aedffa37",
                "md5": "2929c524c46c3518dcf80298bb542d0a",
                "sha256": "b8790086ac85c350ea9d4fb4e2cf744b3f1e40448f98749977454471c68a4f49"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "2929c524c46c3518dcf80298bb542d0a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 48398,
            "upload_time": "2024-02-24T20:41:23",
            "upload_time_iso_8601": "2024-02-24T20:41:23.379812Z",
            "url": "https://files.pythonhosted.org/packages/5d/a0/d1fcca16364ab29573da5364a0ee30fe44add887fdfea42351b0aedffa37/huffmanfile-1.0.3-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0f901d8cf6ed8a450896b76b5e37731a0749932deac4a1b0757472dfd1060ddc",
                "md5": "da690d629af9aac119854ff1a1fd9bf2",
                "sha256": "379a887adcb29e4ceaaaed45ab12bfaf52817342621630d6296565145132ef60"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "da690d629af9aac119854ff1a1fd9bf2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 28953,
            "upload_time": "2024-02-24T20:41:25",
            "upload_time_iso_8601": "2024-02-24T20:41:25.224684Z",
            "url": "https://files.pythonhosted.org/packages/0f/90/1d8cf6ed8a450896b76b5e37731a0749932deac4a1b0757472dfd1060ddc/huffmanfile-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5ec45624837e064d62a9a157d2d2251050dab391d20103341a13668c93076495",
                "md5": "17a07d7a37041453c0085c9bc453e685",
                "sha256": "e21c51da6886c0da05752c7b740e2df5710656b1becbf2e62f18464cb745211b"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "17a07d7a37041453c0085c9bc453e685",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 29164,
            "upload_time": "2024-02-24T20:41:26",
            "upload_time_iso_8601": "2024-02-24T20:41:26.870433Z",
            "url": "https://files.pythonhosted.org/packages/5e/c4/5624837e064d62a9a157d2d2251050dab391d20103341a13668c93076495/huffmanfile-1.0.3-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "69cbfb6c1c5b8bcd22b9aa7a534aa028bb92d33bd7c23dd9045ea7239335969e",
                "md5": "6c92397f7164bde2d181e4b21bcd6d6d",
                "sha256": "724b1a5c683dfd8ee5a63a94a50a1113c0c7b3dd458b399621a1c201ee4f6693"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6c92397f7164bde2d181e4b21bcd6d6d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 95688,
            "upload_time": "2024-02-24T20:41:28",
            "upload_time_iso_8601": "2024-02-24T20:41:28.184758Z",
            "url": "https://files.pythonhosted.org/packages/69/cb/fb6c1c5b8bcd22b9aa7a534aa028bb92d33bd7c23dd9045ea7239335969e/huffmanfile-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e5427d23184e4fd46b5c76caba559cb5b54bcab8cf692f466524ef2d56b9486d",
                "md5": "622128f6d15fcd78b1a1a6a48f8ee8a7",
                "sha256": "d18942ce238cbc65105732558157dfca4c841002898276f3b7f138bf1c6c8384"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "622128f6d15fcd78b1a1a6a48f8ee8a7",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 87508,
            "upload_time": "2024-02-24T20:41:29",
            "upload_time_iso_8601": "2024-02-24T20:41:29.979143Z",
            "url": "https://files.pythonhosted.org/packages/e5/42/7d23184e4fd46b5c76caba559cb5b54bcab8cf692f466524ef2d56b9486d/huffmanfile-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "173a7307af37916ee68d587390f82f55e329ecf0395c9a76de7a4316b94094e0",
                "md5": "372e0b5377d7075dd14f0bb3724b7bdb",
                "sha256": "2c8df1da761d80c30ca8e2362bf92579a6f961f13bf12334720284f6fbcbc897"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "372e0b5377d7075dd14f0bb3724b7bdb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 48382,
            "upload_time": "2024-02-24T20:41:31",
            "upload_time_iso_8601": "2024-02-24T20:41:31.103270Z",
            "url": "https://files.pythonhosted.org/packages/17/3a/7307af37916ee68d587390f82f55e329ecf0395c9a76de7a4316b94094e0/huffmanfile-1.0.3-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d59a28eb250580bdc1797a97ea42a75d336815281ac07e2777c5a3011313a55",
                "md5": "ca7ff0173e29dc5cd6220bbffdbfa7e0",
                "sha256": "8bafce8e57e781d826df56ae807b09a872353b768bbe128629acb5477d0adf82"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ca7ff0173e29dc5cd6220bbffdbfa7e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 28955,
            "upload_time": "2024-02-24T20:41:32",
            "upload_time_iso_8601": "2024-02-24T20:41:32.834181Z",
            "url": "https://files.pythonhosted.org/packages/6d/59/a28eb250580bdc1797a97ea42a75d336815281ac07e2777c5a3011313a55/huffmanfile-1.0.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c407beb3e7c01451d708ca45f31cad33a3f6e5c774e76aade122d81a50aa6961",
                "md5": "d04041055eb7636445d5ddfaf40f3365",
                "sha256": "8b3434ca75064bd447b4a5b5053a133d30608bf0dac0d0f4d0420b3ecb86324c"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d04041055eb7636445d5ddfaf40f3365",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 29163,
            "upload_time": "2024-02-24T20:41:34",
            "upload_time_iso_8601": "2024-02-24T20:41:34.509106Z",
            "url": "https://files.pythonhosted.org/packages/c4/07/beb3e7c01451d708ca45f31cad33a3f6e5c774e76aade122d81a50aa6961/huffmanfile-1.0.3-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e09b5eb2bee4915b8b9bb9b7f0633e18e9fed893a7fe7459c689b7e50b85218b",
                "md5": "4bc38b9712889febe877764cba41b8e8",
                "sha256": "77b3833beefe3231e9167ab70858ebaf265f4bd07a1b03adc8fd30f13a612636"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4bc38b9712889febe877764cba41b8e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 95678,
            "upload_time": "2024-02-24T20:41:36",
            "upload_time_iso_8601": "2024-02-24T20:41:36.215632Z",
            "url": "https://files.pythonhosted.org/packages/e0/9b/5eb2bee4915b8b9bb9b7f0633e18e9fed893a7fe7459c689b7e50b85218b/huffmanfile-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae9a0c84ff2f208db774540be40063b0ad7236bbcdf42554da1a80354b5e57f0",
                "md5": "e42fb035d5920883bdc9d19ce7fcd10a",
                "sha256": "94922e879a83c434ddd494d494087de18fe480d15ba71a62cb84e6ad86a633c7"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "e42fb035d5920883bdc9d19ce7fcd10a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 87534,
            "upload_time": "2024-02-24T20:41:37",
            "upload_time_iso_8601": "2024-02-24T20:41:37.990967Z",
            "url": "https://files.pythonhosted.org/packages/ae/9a/0c84ff2f208db774540be40063b0ad7236bbcdf42554da1a80354b5e57f0/huffmanfile-1.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbdedbad40f8b1adb74aef641817af54a416b7a1c8c381e3140b708057ebe6d4",
                "md5": "7e0ceaa88d73ce48935ce33b45857b94",
                "sha256": "d51e3171747870cf5144adfcd9f6147c93824dac83e35d2aedc8f523e8c25bf7"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp38-cp38-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "7e0ceaa88d73ce48935ce33b45857b94",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 48378,
            "upload_time": "2024-02-24T20:41:39",
            "upload_time_iso_8601": "2024-02-24T20:41:39.743340Z",
            "url": "https://files.pythonhosted.org/packages/fb/de/dbad40f8b1adb74aef641817af54a416b7a1c8c381e3140b708057ebe6d4/huffmanfile-1.0.3-cp38-cp38-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fea1bb1f9b513093090e183968dd81c2da690937be4cbde3ab581127517d4565",
                "md5": "9632d0471abe74057153afb770212796",
                "sha256": "eb43a2b2f8f427227815cd835b7a67b78f0de538f41edb7bae7488611795be37"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9632d0471abe74057153afb770212796",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 28955,
            "upload_time": "2024-02-24T20:41:40",
            "upload_time_iso_8601": "2024-02-24T20:41:40.998900Z",
            "url": "https://files.pythonhosted.org/packages/fe/a1/bb1f9b513093090e183968dd81c2da690937be4cbde3ab581127517d4565/huffmanfile-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "70c8c3e00d9b5d04348906e4a6e45eca1a7f0469541f215f151f4de1163d6d08",
                "md5": "28355e4b086b352838dde3d1cad2d169",
                "sha256": "170776db16572e1099bde96e15063db7c35e94cfee4189561da358c99d4b0d32"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "28355e4b086b352838dde3d1cad2d169",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 29160,
            "upload_time": "2024-02-24T20:41:42",
            "upload_time_iso_8601": "2024-02-24T20:41:42.009186Z",
            "url": "https://files.pythonhosted.org/packages/70/c8/c3e00d9b5d04348906e4a6e45eca1a7f0469541f215f151f4de1163d6d08/huffmanfile-1.0.3-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "efc9186eda5307a910a76354c52b54200051871ab653c8537a9153c511fe6e8a",
                "md5": "eeb9d59e2295695a77234345d0b3cfa9",
                "sha256": "9ab4cad1c80bdc6d5b05da6f19abec05d42db753ff43acfef09ebeb5588a1fda"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "eeb9d59e2295695a77234345d0b3cfa9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 95835,
            "upload_time": "2024-02-24T20:41:43",
            "upload_time_iso_8601": "2024-02-24T20:41:43.915484Z",
            "url": "https://files.pythonhosted.org/packages/ef/c9/186eda5307a910a76354c52b54200051871ab653c8537a9153c511fe6e8a/huffmanfile-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "01afb1dfdc3cedb42f172ce1feae3bf78f455bd220f2005980d37f416fea8327",
                "md5": "e23c64e7298e982f4eafb3b86c523dcb",
                "sha256": "a40436771956a17fecba339b2c27ebf0a4eae1a65bb72941131d236aa4fb4ef5"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "e23c64e7298e982f4eafb3b86c523dcb",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 87633,
            "upload_time": "2024-02-24T20:41:44",
            "upload_time_iso_8601": "2024-02-24T20:41:44.979460Z",
            "url": "https://files.pythonhosted.org/packages/01/af/b1dfdc3cedb42f172ce1feae3bf78f455bd220f2005980d37f416fea8327/huffmanfile-1.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d50643ffe664e1f5d3315de8521ba1054649183b8f3f254bb9dc9141724a3834",
                "md5": "acc62f94b505ef438ab92aea5694aeb7",
                "sha256": "6d168d25ff0462bedb387e590591fc7b72691f0b810f299d49b7cc33565d0a3f"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp39-cp39-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "acc62f94b505ef438ab92aea5694aeb7",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 48406,
            "upload_time": "2024-02-24T20:41:46",
            "upload_time_iso_8601": "2024-02-24T20:41:46.122788Z",
            "url": "https://files.pythonhosted.org/packages/d5/06/43ffe664e1f5d3315de8521ba1054649183b8f3f254bb9dc9141724a3834/huffmanfile-1.0.3-cp39-cp39-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6dcafada30bb38c13502eb3cb253c0f3806ef8c68190016b12f519d33491b0b0",
                "md5": "0625b7d42b809c9af38b33fad6757155",
                "sha256": "593e1c7919daf24cee5a2eb3e92bfe40a19aa254620b7ba9218ecd26eaaaf7bc"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0625b7d42b809c9af38b33fad6757155",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 28954,
            "upload_time": "2024-02-24T20:41:47",
            "upload_time_iso_8601": "2024-02-24T20:41:47.160782Z",
            "url": "https://files.pythonhosted.org/packages/6d/ca/fada30bb38c13502eb3cb253c0f3806ef8c68190016b12f519d33491b0b0/huffmanfile-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ca2b40e10f0be06c34fd49eda0bc6a7a818b8d8bf6657bf111870afc776d265",
                "md5": "7136c1ec9a4b2cd8dea9a0fd3839cd69",
                "sha256": "502bbba1755055c61da4d5c08cf12a02bee08f039841ec4d81f831706ca6d185"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7136c1ec9a4b2cd8dea9a0fd3839cd69",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 29161,
            "upload_time": "2024-02-24T20:41:48",
            "upload_time_iso_8601": "2024-02-24T20:41:48.126682Z",
            "url": "https://files.pythonhosted.org/packages/9c/a2/b40e10f0be06c34fd49eda0bc6a7a818b8d8bf6657bf111870afc776d265/huffmanfile-1.0.3-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "41050ef65a2f01246d61ed05dee01866b2adfc84e6ed3bd7d90253cca001558b",
                "md5": "db70c50666a51cd4b11821964d43f80e",
                "sha256": "0a752896124d86628e0e00e6d1db6e9bc0b339b63d7380b5108c07635278580b"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "db70c50666a51cd4b11821964d43f80e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 95676,
            "upload_time": "2024-02-24T20:41:49",
            "upload_time_iso_8601": "2024-02-24T20:41:49.897967Z",
            "url": "https://files.pythonhosted.org/packages/41/05/0ef65a2f01246d61ed05dee01866b2adfc84e6ed3bd7d90253cca001558b/huffmanfile-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "833707d03222d6e233f3fa76bce14450a95399554ac176c88c71d37b372d0289",
                "md5": "5943c5304e75a1191febe5c10e2cc7ce",
                "sha256": "5b6e425c71b28e1ed12fcde1bde59a264c1a423553365d50b09ac95f3c701dc3"
            },
            "downloads": -1,
            "filename": "huffmanfile-1.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "5943c5304e75a1191febe5c10e2cc7ce",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 87495,
            "upload_time": "2024-02-24T20:41:51",
            "upload_time_iso_8601": "2024-02-24T20:41:51.672028Z",
            "url": "https://files.pythonhosted.org/packages/83/37/07d03222d6e233f3fa76bce14450a95399554ac176c88c71d37b372d0289/huffmanfile-1.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-24 20:41:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ybubnov",
    "github_project": "libhuffman",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "huffmanfile"
}
        
Elapsed time: 3.20212s