Metadata-Version: 2.1
Name: py3-bencode
Version: 0.0.3
Summary: Python 3 bencoding implementation
Home-page: https://github.com/bashkirtsevich-llc/py3bencode
Author: D.Bashkirtsevich
Author-email: bashkirtsevich@gmail.com
License: GPL3 License
Description: # Python 3 bencoding library
        [![Build Status](https://travis-ci.org/bashkirtsevich-llc/py3bencode.svg?branch=master)](https://travis-ci.org/bashkirtsevich-llc/py3bencode)
        
        Python 3 bytearray bencoding library.
        
        Encode all data into `byte`. Useful for networking.
        
        
        ## Example
        
        ```python
        >>> from bencode import bencode, bdecode
        
        
        >>> foo = bencode({"foo": [0, -1, 2, "3", {"4": 5}], "bar": {"baz": 1}})
        >>> print(foo)
        b'd3:bard3:bazi1ee3:fooli0ei-1ei2e1:3d1:4i5eeee'
        
        >>> bar = bdecode(foo)
        >>> print(bar)
        {b'bar': {b'baz': 1}, b'foo': [0, -1, 2, b'3', {b'4': 5}]}
        
        ```
        
        ## `decoder` for `bdecode`
        
        Optional argument in `bdecode` function, provide decode bytes to another types. It can be helpful for decode dict key into strings.
        
        `decoder` is a callback function with arguments: `field_type`, `value`
        * `field_type` **str**, possible values: `"key"`, `"value"`;
        * `value` **bytes**.
        
        
        ```python
        >>> def custom_decoder(field_type, value):
        ...     if field_type == "key":
        ...         return str(value, "ascii")
        ...     elif field_type == "value":
        ...         return str(value, "utf-8")
        ...     else:
        ...         raise Exception("'field_type' can pass only 'key' and 'value' values")
        ...     
        
        >>> bar = bdecode(foo, decoder=custom_decoder)
        >>> print(bar)
        {'bar': {'baz': 1}, 'foo': [0, -1, 2, '3', {'4': 5}]}
        ```
        
Keywords: bencode rawbytes torrent bittorrent
Platform: UNKNOWN
Classifier: Programming Language :: Python
Requires-Python: >=3.6.*
Description-Content-Type: text/markdown
