**1.2.3 (2021.09.29)**
* Hotfix for ensuring that re.findall receives strings

**1.2.2 (2017.02.27)**
* Hotfix for critical issue where only "match" context was taken into account and not "replace" context

**1.2.1 (2017.02.16)**
* (Issue #71) Fix Regression where variables within variables would not expand


**1.2.0 (2017.02.01)**
* (Issue #64) Add `--validate-only` flag to only validate the config without actually doing anything
* (Issue #31) Add `--diff` flag to generate a git-like diff for each processed file. The file will be created under `cwd/.rpx/...`
* (Issue #67) Error-out on unexpanded variables
* Apply mutual exclusivity on all relevant CLI flags
* Redo VariableHandler
* More Coverage FTW
* Make some public functions and classes private
* Optimize code greatly. I wonder why people write this everytime their release something and expect people to understand what it means.


**1.1.0 (2017.01.15)**

NOTE: There are breaking changes in this release

* (Issue #63) Consolidate subcommands `in-path` and `from-config` for a single `rpx` command. See README for usage.
* (Issue #62) Add repex config schema validation
* (Issue #59) Add official support for py33, py36 and pypy
* (Issue #39) Fix logger not getting verbosity level correctly in certain situations
* (Issue #40) Fix undefined `file_to_handle` var when no matches are found
* (Issue #41) Fix `.tmp` file for each file remains in fs when no matches are found
* (Issue #53) Do not print log-level and logger name with each log message. Only `timestamp - message`
* (Issue #65) For each path in the config, print its description for easy log tailing
* Add CHANGES file
* Add MANIFEST.in file (Which includes LICENSE)
* Add requires.io requirements monitoring
* Add landscape.io code health monitoring
* Add codecov.io code coverage monitoring
* Update README to accommodate for `iterate` function API changes
* Replace nose with pytest

**1.0.0 (2016.06.01)**

* Change CLI command names `repl` and `iter` to `in-path` and `from-config` respectively
* `path` and `config-file` in `repl` and `iter` have been changed to positional arguments respectively
* Reorganize the code, remove unnecessary logger configuration and make repex a single module
* Introduced deep error handling
* `handle_file` is not longer exposed as a function in the API
* `_get_config` is not the function which retrieves the configuration so `import_config` is no longer exposed in the API
* Standardize error messages
* sys.exit is now only used in the CLI and instead exceptions are raised for each error so that tracebacks are exposed to anyone using the Python API directly
* Some breaking API changes were introduced, in, for instance, the `iterate` and `get_all_files` functions.
* 99% test coverage!
* Fixed a serious bug where if multiple instances of the same expression existed in a file, it would replace each expression multiple times resulting in a potentially bad replacement.
* Logging is now less verbose and more concentrated about changes only, not peripherals.

**0.4.3 (2016.04.29)**

* Fixed whatever it was that prevented repex from working properly on Windows.
Added appveyor testing env.

**0.4.1 (2016.04.17)**

Preserve file attributes when replacing.
No longer print mega-verbose exclusion of all subdirs/files in chosen excluded path.

**0.4.0 (2015-12-04)**

Added a sed like CLI command rpx repl. You can now handle a specific path (analogous to a path object in the config.yaml) directly from the CLI without the need of a config file. This brings the power of repex (matching context, replacement, multiple regex based paths, validation, etc..) to the user with less hassle.
The previous CLI command rpx execute is now called rpx iter.
Variables will now be expanded only if variables are provided.
Now printing out validator file path when supplied.

**0.3.2 (2015-11-23)**

* Code cleanup and optimizaiton
* Validator dict config is now validated per path. Previously, it wasn't validated at all.
* Fixed a bug where the validator will fail even if a True value is returned
* Logger is now overridable when import repex. File logger and more complex logging format is declared only when executed via the CLI.
* Added multiple --var 'key'='value' flag to pass variables from the CLI.
* You can now pass variables to dicts (e.g. validator) and lists (e.g. must_include).