<commit_before>"""
hatchery (version {version})

Automate the process of testing, packaging, and uploading your project with
dynamic versioning and no source tree pollution!

Usage: hatchery [<task> ...] [options]

Just run from the root of your project and off you go.  Tasks can be
chained, and will always be run in the order below regardless of the order
in which they are specified.  Available tasks are:

    help        print this help output (ignores all other tasks)
    check       check to see if this project conforms to hatchery requirements
    config      print the computed config contents to the console
    clean       clean up the working directory
    test        run tests according to commands specified in .hatchery.yml
    package     create binary packages to be distributed
    register    register your package with the index if you haven't already
    upload      upload all created packages to a configured pypi index
    tag         tag your git repository with the release version and push
                it back up to the origin

General options:

    -h, --help      print this help output and quit
    --log-level=LEVEL
                    one of (debug, info, error, critical) [default: info]
    -s, --stream-command-output
                    stream output of all subcommands as they are running.
                    if not set, output will be captured and printed to the
                    screen only on failed commands
    -r=VER, --release-version=VER
                    version to use when packaging and registering
                    Note: version will be inferred when uploading

Notes on tagging:

    Creating a tag requires a clean working copy, which means that there are
    two very important prerequisites:

        1. you should not use hatchery's tagging (and uploading) functionality
           until you have committed all of your changes (good practice anyway)
        2. you must have an entry for .hatchery.work in your .gitignore file
           so that hatchery itself does not dirty up your working tree

Config files:

    hatchery endeavors to have as few implicit requirements on your project
    as possible (and those are managed using the "check" task).  In order
    for it to do its work, therefore, some configuration has to be provided.
    This is done using config files.  There are two files (user-level, and
    project-level) that can be used to specify these configuration files:

        {config_files}

    In the case where both files define the same parameters, the project-level
    file wins.  See README.md for more information about the available
    configuration parameters.
"""

import docopt
import logging
import funcy
import os
import workdir
import git
import ruamel.yaml as yaml
from . import _version
from . import executor
from . import project
from . import config
from . import snippets

logger = logging.getLogger(__name__)
workdir.options.path = '.hatchery.work'<commit_msg>make doubly sure that the workdir does not recursively sync itself<commit_after>"""
hatchery (version {version})

Automate the process of testing, packaging, and uploading your project with
dynamic versioning and no source tree pollution!

Usage: hatchery [<task> ...] [options]

Just run from the root of your project and off you go.  Tasks can be
chained, and will always be run in the order below regardless of the order
in which they are specified.  Available tasks are:

    help        print this help output (ignores all other tasks)
    check       check to see if this project conforms to hatchery requirements
    config      print the computed config contents to the console
    clean       clean up the working directory
    test        run tests according to commands specified in .hatchery.yml
    package     create binary packages to be distributed
    register    register your package with the index if you haven't already
    upload      upload all created packages to a configured pypi index
    tag         tag your git repository with the release version and push
                it back up to the origin

General options:

    -h, --help      print this help output and quit
    --log-level=LEVEL
                    one of (debug, info, error, critical) [default: info]
    -s, --stream-command-output
                    stream output of all subcommands as they are running.
                    if not set, output will be captured and printed to the
                    screen only on failed commands
    -r=VER, --release-version=VER
                    version to use when packaging and registering
                    Note: version will be inferred when uploading

Notes on tagging:

    Creating a tag requires a clean working copy, which means that there are
    two very important prerequisites:

        1. you should not use hatchery's tagging (and uploading) functionality
           until you have committed all of your changes (good practice anyway)
        2. you must have an entry for .hatchery.work in your .gitignore file
           so that hatchery itself does not dirty up your working tree

Config files:

    hatchery endeavors to have as few implicit requirements on your project
    as possible (and those are managed using the "check" task).  In order
    for it to do its work, therefore, some configuration has to be provided.
    This is done using config files.  There are two files (user-level, and
    project-level) that can be used to specify these configuration files:

        {config_files}

    In the case where both files define the same parameters, the project-level
    file wins.  See README.md for more information about the available
    configuration parameters.
"""

import docopt
import logging
import funcy
import os
import workdir
import git
import ruamel.yaml as yaml
from . import _version
from . import executor
from . import project
from . import config
from . import snippets

logger = logging.getLogger(__name__)
workdir.options.path = '.hatchery.work'
workdir.options.sync_exclude_regex_list = [r'\.hatchery\.work']
{'fraction_non_alphanumeric': 0.04167352989622797, 'fraction_numerical': 0.0006588700378850271, 'mean_word_length': 2.72972972972973, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1497651', 'n_tokens_mistral': 1482, 'n_tokens_neox': 1408, 'n_words': 807}