# Path: thefuck/conf.py
# class Settings(dict):
#     def __getattr__(self, item):
#     def __setattr__(self, key, value):
#     def init(self, args=None):
#     def _init_settings_file(self):
#     def _get_user_dir_path(self):
#     def _setup_user_dir(self):
#     def _settings_from_file(self):
#     def _rules_from_env(self, val):
#     def _priority_from_env(self, val):
#     def _val_from_env(self, env, attr):
#     def _settings_from_env(self):
#     def _settings_from_args(self, args):
# 
# Path: thefuck/const.py
# class _GenConst(object):
#     def __init__(self, name):
#     def __repr__(self):
# KEY_UP = _GenConst('↑')
# KEY_DOWN = _GenConst('↓')
# KEY_CTRL_C = _GenConst('Ctrl+C')
# KEY_CTRL_N = _GenConst('Ctrl+N')
# KEY_CTRL_P = _GenConst('Ctrl+P')
# KEY_MAPPING = {'\x0e': KEY_CTRL_N,
#                '\x03': KEY_CTRL_C,
#                '\x10': KEY_CTRL_P}
# ACTION_SELECT = _GenConst('select')
# ACTION_ABORT = _GenConst('abort')
# ACTION_PREVIOUS = _GenConst('previous')
# ACTION_NEXT = _GenConst('next')
# ALL_ENABLED = _GenConst('All rules enabled')
# DEFAULT_RULES = [ALL_ENABLED]
# DEFAULT_PRIORITY = 1000
# DEFAULT_SETTINGS = {'rules': DEFAULT_RULES,
#                     'exclude_rules': [],
#                     'wait_command': 3,
#                     'require_confirmation': True,
#                     'no_colors': False,
#                     'debug': False,
#                     'priority': {},
#                     'history_limit': None,
#                     'alter_history': True,
#                     'wait_slow_command': 15,
#                     'slow_commands': ['lein', 'react-native', 'gradle',
#                                       './gradlew', 'vagrant'],
#                     'repeat': False,
#                     'instant_mode': False,
#                     'num_close_matches': 3,
#                     'env': {'LC_ALL': 'C', 'LANG': 'C', 'GIT_TRACE': '1'},
#                     'excluded_search_path_prefixes': []}
# ENV_TO_ATTR = {'THEFUCK_RULES': 'rules',
#                'THEFUCK_EXCLUDE_RULES': 'exclude_rules',
#                'THEFUCK_WAIT_COMMAND': 'wait_command',
#                'THEFUCK_REQUIRE_CONFIRMATION': 'require_confirmation',
#                'THEFUCK_NO_COLORS': 'no_colors',
#                'THEFUCK_DEBUG': 'debug',
#                'THEFUCK_PRIORITY': 'priority',
#                'THEFUCK_HISTORY_LIMIT': 'history_limit',
#                'THEFUCK_ALTER_HISTORY': 'alter_history',
#                'THEFUCK_WAIT_SLOW_COMMAND': 'wait_slow_command',
#                'THEFUCK_SLOW_COMMANDS': 'slow_commands',
#                'THEFUCK_REPEAT': 'repeat',
#                'THEFUCK_INSTANT_MODE': 'instant_mode',
#                'THEFUCK_NUM_CLOSE_MATCHES': 'num_close_matches',
#                'THEFUCK_EXCLUDED_SEARCH_PATH_PREFIXES': 'excluded_search_path_prefixes'}
# SETTINGS_HEADER = u"""# The Fuck settings file
# #
# # The rules are defined as in the example bellow:
# #
# # rules = ['cd_parent', 'git_push', 'python_command', 'sudo']
# #
# # The default values are as follows. Uncomment and change to fit your needs.
# # See https://github.com/nvbn/thefuck#settings for more information.
# #
# 
# """
# ARGUMENT_PLACEHOLDER = 'THEFUCK_ARGUMENT_PLACEHOLDER'
# CONFIGURATION_TIMEOUT = 60
# USER_COMMAND_MARK = u'\u200B' * 10
# LOG_SIZE_IN_BYTES = 1024 * 1024
# LOG_SIZE_TO_CLEAN = 10 * 1024
# DIFF_WITH_ALIAS = 0.5
# SHELL_LOGGER_SOCKET_ENV = 'SHELL_LOGGER_SOCKET'
# SHELL_LOGGER_LIMIT = 5


import os
import pytest
from thefuck import shells
from thefuck import conf, const
from thefuck.system import Path

shells.shell = shells.Generic()


def pytest_configure(config):
    config.addinivalue_line("markers", "functional: mark test as functional")


def pytest_addoption(parser):
    """Adds `--enable-functional` argument."""
    group = parser.getgroup("thefuck")
    group.addoption('--enable-functional', action="store_true", default=False,
                    help="Enable functional tests")


@pytest.fixture
def no_memoize(monkeypatch):
    monkeypatch.setattr('thefuck.utils.memoize.disabled', True)


@pytest.fixture(autouse=True)
def settings(request):
    def _reset_settings():
        conf.settings.clear()

# Path: thefuck/conf.py
# class Settings(dict):
#     def __getattr__(self, item):
#     def __setattr__(self, key, value):
#     def init(self, args=None):
#     def _init_settings_file(self):
#     def _get_user_dir_path(self):
#     def _setup_user_dir(self):
#     def _settings_from_file(self):
#     def _rules_from_env(self, val):
#     def _priority_from_env(self, val):
#     def _val_from_env(self, env, attr):
#     def _settings_from_env(self):
#     def _settings_from_args(self, args):
# 
# Path: thefuck/const.py
# class _GenConst(object):
#     def __init__(self, name):
#     def __repr__(self):
# KEY_UP = _GenConst('↑')
# KEY_DOWN = _GenConst('↓')
# KEY_CTRL_C = _GenConst('Ctrl+C')
# KEY_CTRL_N = _GenConst('Ctrl+N')
# KEY_CTRL_P = _GenConst('Ctrl+P')
# KEY_MAPPING = {'\x0e': KEY_CTRL_N,
#                '\x03': KEY_CTRL_C,
#                '\x10': KEY_CTRL_P}
# ACTION_SELECT = _GenConst('select')
# ACTION_ABORT = _GenConst('abort')
# ACTION_PREVIOUS = _GenConst('previous')
# ACTION_NEXT = _GenConst('next')
# ALL_ENABLED = _GenConst('All rules enabled')
# DEFAULT_RULES = [ALL_ENABLED]
# DEFAULT_PRIORITY = 1000
# DEFAULT_SETTINGS = {'rules': DEFAULT_RULES,
#                     'exclude_rules': [],
#                     'wait_command': 3,
#                     'require_confirmation': True,
#                     'no_colors': False,
#                     'debug': False,
#                     'priority': {},
#                     'history_limit': None,
#                     'alter_history': True,
#                     'wait_slow_command': 15,
#                     'slow_commands': ['lein', 'react-native', 'gradle',
#                                       './gradlew', 'vagrant'],
#                     'repeat': False,
#                     'instant_mode': False,
#                     'num_close_matches': 3,
#                     'env': {'LC_ALL': 'C', 'LANG': 'C', 'GIT_TRACE': '1'},
#                     'excluded_search_path_prefixes': []}
# ENV_TO_ATTR = {'THEFUCK_RULES': 'rules',
#                'THEFUCK_EXCLUDE_RULES': 'exclude_rules',
#                'THEFUCK_WAIT_COMMAND': 'wait_command',
#                'THEFUCK_REQUIRE_CONFIRMATION': 'require_confirmation',
#                'THEFUCK_NO_COLORS': 'no_colors',
#                'THEFUCK_DEBUG': 'debug',
#                'THEFUCK_PRIORITY': 'priority',
#                'THEFUCK_HISTORY_LIMIT': 'history_limit',
#                'THEFUCK_ALTER_HISTORY': 'alter_history',
#                'THEFUCK_WAIT_SLOW_COMMAND': 'wait_slow_command',
#                'THEFUCK_SLOW_COMMANDS': 'slow_commands',
#                'THEFUCK_REPEAT': 'repeat',
#                'THEFUCK_INSTANT_MODE': 'instant_mode',
#                'THEFUCK_NUM_CLOSE_MATCHES': 'num_close_matches',
#                'THEFUCK_EXCLUDED_SEARCH_PATH_PREFIXES': 'excluded_search_path_prefixes'}
# SETTINGS_HEADER = u"""# The Fuck settings file
# #
# # The rules are defined as in the example bellow:
# #
# # rules = ['cd_parent', 'git_push', 'python_command', 'sudo']
# #
# # The default values are as follows. Uncomment and change to fit your needs.
# # See https://github.com/nvbn/thefuck#settings for more information.
# #
# 
# """
# ARGUMENT_PLACEHOLDER = 'THEFUCK_ARGUMENT_PLACEHOLDER'
# CONFIGURATION_TIMEOUT = 60
# USER_COMMAND_MARK = u'\u200B' * 10
# LOG_SIZE_IN_BYTES = 1024 * 1024
# LOG_SIZE_TO_CLEAN = 10 * 1024
# DIFF_WITH_ALIAS = 0.5
# SHELL_LOGGER_SOCKET_ENV = 'SHELL_LOGGER_SOCKET'
# SHELL_LOGGER_LIMIT = 5


# Path: tests/conftest.py
import os
import pytest
from thefuck import shells
from thefuck import conf, const
from thefuck.system import Path


shells.shell = shells.Generic()


def pytest_configure(config):
    config.addinivalue_line("markers", "functional: mark test as functional")


def pytest_addoption(parser):
    """Adds `--enable-functional` argument."""
    group = parser.getgroup("thefuck")
    group.addoption('--enable-functional', action="store_true", default=False,
                    help="Enable functional tests")


@pytest.fixture
def no_memoize(monkeypatch):
    monkeypatch.setattr('thefuck.utils.memoize.disabled', True)


@pytest.fixture(autouse=True)
def settings(request):
    def _reset_settings():
        conf.settings.clear()

        conf.settings.update(const.DEFAULT_SETTINGS)