CHANGES
=======

3.0.0
-----

* Restore Python 3.6/7 support
* Remove format function
* Publish release notes
* Bump hacking

2.0.1
-----

* Remove shebang from setup.py
* Drop direct execution of run.py
* Stop using deprecated 'message' attribute in Exception
* Update python classifier in setup.cfg
* Remove translation sections from setup.cfg
* Update CI to use unversioned jobs template
* setup.cfg: Replace dashes by underscores
* [community goal] Update contributor documentation
* Use py3 as the default runtime for tox
* Replace assertItemsEqual with assertCountEqual
* Migrate from testr to stestr

2.0.0
-----

* Switch to collections.abc.\*
* Remove six
* tox: Set 'ignore\_basepython\_conflict'
* Replace assertItemsEqual with assertCountEqual
* Stop to use the \_\_future\_\_ module
* Switch to newer openstackdocstheme and reno versions
* Fix hacking min version to 3.0.1
* Cleanup py27 support
* Update hacking for Python3
* Fix docs gate
* [ussuri][goal] Drop python 2.7 support and testing
* Import docs building job
* Add Python 3 Train unit tests
* Dropping the py35 testing
* OpenDev Migration Patch
* add python 3.7 unit test job
* Removed older version of python added 3.5/3.6
* Update min tox version to 2.0
* Fix readme Pygments package not found
* add python 3.6 unit test job
* import zuul job settings from project-config
* fix tox python3 overrides
* Make changes to groupBy() backward-compatible
* Use \_\_slots\_\_ for more yaqltypes
* Remove setting of version/release from releasenotes
* Update the documention for doc migration
* Make the CLI YAQL engine entirely configurable
* Get rid of Babel dependency since it is not needed

1.1.3
-----

* Use modern PBR and hacking packages
* Improvements to yaql CLI
* Added engine options to disable input/output data conversion

1.1.2
-----

* Pass re.VERBOSE explicitly
* Customizing and extending yaql documentation
* Changed the home-page link
* Use six.moves.input for Python 3 compatability
* YAQL syntax documentation
* Remove oslosphinx from sphinx extensions
* Auto building of std library docs
* Use \_\_slots\_\_ for yaqltypes
* Use \_\_slots\_\_ for Parameter/Function definition
* Don't include openstack/common in flake8 exclude list
* Drop MANIFEST.in - it's not needed by pbr
* [docs] Docstrings for queries YAQL functions
* Create child context in regex/search function
* Enable release notes translation
* [docs] Docstrings for collections YAQL functions
* [docs] Docstrings for legacy YAQL functions
* [docs] Docstrings for regex YAQL functions
* [docs] Docstrings for system YAQL functions
* [docs] Docstrings for yaqlized YAQL functions
* Add help info to CLI options
* [docs] Docstrings for common YAQL functions
* [docs] Docstrings for queries YAQL functions
* Update flake8 ignore list
* groupBy() aggregator was fixed
* Add a test proving escaped back references work
* [docs] Docstrings for boolean YAQL functions
* Replace ValueError with StopIteration in single() method
* [docs] Docstrings for strings YAQL functions
* [docs] Docstrings for branching YAQL functions
* [docs] Docstrings for math YAQL functions
* [docs] Docstrings for date\_time YAQL functions
* Rename shiftBitsLeft and shiftBitsRight arguments
* YAQL autodoc script
* Remove discover from test-requirements
* Refactor datetime.datetime usage to defined DATETIME\_TYPE
* Fix "indexOf", "lastIndexOf" methods length parameter usage
* Use reno for releasenotes

1.1.1
-----

* Fix string operators >= and <=
* Update tests of YAQL queries
* Extend .slice() method implementation to all Iterables
* Fix typo in YAML example
* Python 3 compatibility issues were fixed

1.1.0
-----

* Remove the upper cap on ply version
* Allow Sequence/Iterable/Iterator to be nullable
* Adds abc.ABCMeta for base smart-type classes
* Adds unit test for ability to pass lambda from Python
* call() function was added
* SmartType aggregation types were added
* Fixed Integer smart-type was accepting booleans
* Add methods to check value type
* YaqlInterface was introduced
* Wrong parameter default for first()/last() was fixed
* Some polish of \_\_init\_\_ script
* LinkedContext was introduced
* Allow replace method for all iterables
* Add "Getting started" document
* Turn [...] and {...} into regular operators
* Ability to yaqlize any Python class was added
* Incorrect engine option was used for CLI
* Allow comparision (= and !=) for values of different types
* py26/py33 are no longer supported by Infra's CI
* remove python 2.6 trove classifier
* Incorrect behavior of join() on iterators was fixed
* Update .gitreview for new namespace
* Allow "not X" expressions on non-boolean X
* Change ignore-errors to ignore\_errors
* generateMany function was added
* DateTime and TimeSpan functions
* Adds decorator to create properties
* Refactoring of conventions code

1.0.1
-----

* Generalizes $collection.attribute to $iterable.attribute
* Removes code copied from six 1.9
* Renames sender to receiver
* \_merge\_dicts function calls itself without item\_merger arg
* Documentation structure update

1.0.0
-----

* Constant SmartType was broken
* Adds ability to compare non-comparable types in legacy mode
* Adds engine option to make dicts iterable
* Boolean equality functions were missing

1.0.0rc2
--------

* Add legacy mode to CLI
* Makes len(string) be extension method
* Better exception messages
* \*args/\*\*kwargs were added to SmartType methods
* Make data converters extendable
* Contexts interface refactoring
* Generalization of helper methods to limit resource consumption
* Fixes to collections/queries stdlib
* Improved legacy mode
* Adds parameter specification for #call()
* Python 3 compatibility bug
* Fixes bug with positional arg specs

1.0.0rc1
--------

* Small improvements to yaql

1.0.0b3
-------

* Adds Unicode support to yaql REPL CLI
* Fixed compatibility with ply 3.6

1.0.0b2
-------

* Enable H306 sort imports in alphabetical order
* Fixed a conflict in grammar
* Detect YAQL version based on the distribution package
* yaql 1.0
* Restore CLI entry point and version in setup.cfg
* Enable Python 3 support
* Workflow documentation is now in infra-manual
* Enable H902 collection membership evaluation
* Enable H202 assertRaises Exception too broad
* Enable H201 no 'except:' at least use 'except Exception:'
* Enable F841 unused variables
* Enable F403 import something.\*
* Enable F401 something imported but unused
* Update gitignore
* Enable E501 line too long
* Using print() function instead of print statements to allow Python3
* Simplified the wrong precedence example in tests
* Added a test which demonstrates the wrong precedence of 'or' and 'and' operators
* Fixed compatibility with Python 2.6
* Fix pep8 checks: W292,W391
* Fixed pep8 checks: E203,E226,E302,E303
* Toxify project
* \* Date fixed in CLI prompt \* Obsolete files deleted \* URL to github added as homepage setup.py
* Version fixed in CLI prompt
* migrated cli functions
* Added 'switch' and 'for\_each' functions
* Removed old code
* 'as' function impelemented, context data retrieval/saving fixed
* Class restriction rewritten as self parameter arg\_type setting Self parameter validation added Added string conversion functions Added ways to specify parameter definitions for vararg parameters
* added a set of advanced functions for collections operations and sequence generation
* Fixed a bug when self object was written into the context data
* improved assertEval method
* random function added
* Added collection\_parameter decorator as a syntax sugar
* Join function implemented for collections
* old module for builtin functions delete
* Namespace support
* Tests for Composite function names
* ! operator fixes
* Exception handling improved
* minor context changes
* Separated ! and not operators Added line breaks to ignore list
* BuildDict added
* Class methods can now be registered as functions
* Constant tests extract to a different file type conversions test added
* boolean operators added
* type conversion functions added
* Major 0.3 changes implemented
* CLI is now called as "yaql" command, not "yaql-cli" Incremented version to 0.2.1 (cherry picked from commit ae6636a)
* CLI is now called as "yaql" command, not "yaql-cli" Incremented version to 0.2.1
* Modified some builtin functions (attribution, filtering) etc to handle objects and dictionary properly: Strings are not treated as collections anymore. Exception is now thrown if an unknown property is attempted to be retrieved for an object. Filtering with non-boolean predicates is no longer possible
* Where fixed
* 0.3 in progress
* Moved decorators to separated module

0.2
---

* Bumped version to 0.2
* Switch function added
* Temporary workaround to make boolean function weekly-typed again
* Temporary functions removed
* parent functions removed, root function finalized
* Pushed data now properly added to the context of function (not the parent context)
* Generator sequences are now limited
* Boolean functions now require strong typing list(\*args) function now properly unwraps generators type conversion functions added
* Context-tree reversing added
* Added support for varargs in context-aware functions
* Attempt to add context-manipulation functions (work in progress yet, most probably parent will be removed and root dramatically modified)
* Get context data ($-char) can now be followed by letters as well as digits
* extensions renamed to cli\_functions
* Test-data became closer to real-world
* extensiions.py renamed to cli\_functions, some temporary debug functions added Console history supoort added
* Collection-collection attribution now properly flattens properties
* Set output dir for parser\_table.py in a platform independent way
* Write parser\_table\_py to a different location
* Empty input is now properly handled in CLI
* Context default data assignment now assigns $1 as well
* Fix precedence for IN operator
* Merge
* Add 'in' operator to YAQL
* CLI will handle all runtime exceptions
* Added ability to run yaql-cli right after setup
* Added license to setup.py
* Separated grammar and lexical exceptions
* Added cli module
* Added 'examples' package
* Generated grammar added to .gitignore
* Updated README
* Added simple setup.py
* Added gitignore
* Updated license notes
* Used @wrap decorator to copy the arguments of context-aware function
* Update LICENSE.txt
* Add Apache 2.0 license
* Initial commit of YAQL: lexical tokenizer, grammar parser and expression executor of the context-based pluggable functions for basic YAQL operations.  Implemented basic set of functions:  - loading of data from context  - attribute access (including collection iteration)  - scoping  - collection filtering  - comparison operators  - arithmetic operators  - boolean operators  - generation of simple data structures (list, dictionary, tuple)
* Initial commit
