<commit_before>"""
    ####                                                               ####
   ##     ####  ##  ##  #### ###### #####  ##  ##  #### ######        ##  ##
   ##    ##  ## ### ## ##      ##   ##  ## ##  ## ##      ##    ####      ##
   ##    ##  ## ######  ###    ##   #####  ##  ## ##      ##            ##
   ##    ##  ## ## ###    ##   ##   ##  ## ##  ## ##      ##          ##
    ####  ####  ##  ## ####    ##   ##  ##  #####  ####   ##          ######

                 Parsing made even more fun (and faster too)

Homepage:
    http://construct.wikispaces.com (including online tutorial)

Typical usage:
    >>> from construct import *

Hands-on example:
    >>> from construct import *
    >>> s = Struct("foo",
    ...     UBInt8("a"),
    ...     UBInt16("b"),
    ... )
    >>> s.parse("\\x01\\x02\\x03")
    Container(a = 1, b = 515)
    >>> print s.parse("\\x01\\x02\\x03")
    Container:
        a = 1
        b = 515
    >>> s.build(Container(a = 1, b = 0x0203))
    "\\x01\\x02\\x03"
"""

from construct.core import *
from construct.adapters import *
from construct.macros import *
from debug import Probe, Debugger


#===============================================================================
# Metadata
#===============================================================================
__author__ = "<NAME> (tomerfiliba [at] gmail.com)"
__maintainer__ = "<NAME> <<EMAIL>>"
__version__ = "2.04"

#===============================================================================
# Shorthand expressions
#===============================================================================
Bits = BitField
Byte = UBInt8
Bytes = Field
Const = ConstAdapter
Tunnel = TunnelAdapter
Embed = Embedded

#===============================================================================
# Deprecated names
# Next scheduled name cleanout: 2.1
#===============================================================================
import functools, warnings

def deprecated(f):
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        warnings.warn(
            "This name is deprecated, use %s instead" % f.__name__,
            DeprecationWarning, stacklevel=2)
        return f(*args, **kwargs)
    return wrapper

MetaField = deprecated(Field)
MetaBytes = deprecated(Field)<commit_msg>Remove the MetaField deprecation warning.<commit_after>"""
    ####                                                               ####
   ##     ####  ##  ##  #### ###### #####  ##  ##  #### ######        ##  ##
   ##    ##  ## ### ## ##      ##   ##  ## ##  ## ##      ##    ####      ##
   ##    ##  ## ######  ###    ##   #####  ##  ## ##      ##            ##
   ##    ##  ## ## ###    ##   ##   ##  ## ##  ## ##      ##          ##
    ####  ####  ##  ## ####    ##   ##  ##  #####  ####   ##          ######

                 Parsing made even more fun (and faster too)

Homepage:
    http://construct.wikispaces.com (including online tutorial)

Typical usage:
    >>> from construct import *

Hands-on example:
    >>> from construct import *
    >>> s = Struct("foo",
    ...     UBInt8("a"),
    ...     UBInt16("b"),
    ... )
    >>> s.parse("\\x01\\x02\\x03")
    Container(a = 1, b = 515)
    >>> print s.parse("\\x01\\x02\\x03")
    Container:
        a = 1
        b = 515
    >>> s.build(Container(a = 1, b = 0x0203))
    "\\x01\\x02\\x03"
"""

from construct.core import *
from construct.adapters import *
from construct.macros import *
from debug import Probe, Debugger


#===============================================================================
# Metadata
#===============================================================================
__author__ = "<NAME> (tomerfiliba [at] gmail.com)"
__maintainer__ = "<NAME> <<EMAIL>>"
__version__ = "2.04"

#===============================================================================
# Shorthand expressions
#===============================================================================
Bits = BitField
Byte = UBInt8
Bytes = Field
Const = ConstAdapter
Tunnel = TunnelAdapter
Embed = Embedded

#===============================================================================
# Deprecated names
# Next scheduled name cleanout: 2.1
#===============================================================================
import functools, warnings

def deprecated(f):
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        warnings.warn(
            "This name is deprecated, use %s instead" % f.__name__,
            DeprecationWarning, stacklevel=2)
        return f(*args, **kwargs)
    return wrapper

MetaBytes = deprecated(MetaField)
{'fraction_non_alphanumeric': 0.3711563447379818, 'fraction_numerical': 0.018189692507579038, 'mean_word_length': 2.628436763550668, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4366944', 'n_tokens_mistral': 1306, 'n_tokens_neox': 1206, 'n_words': 241}