CHANGES
=======

* [TASK] Leverage invoke for managing releases
* [TASK] Simplified custom torrent parser
* [TASK] Update to latest pbr

2.3.14
------

* [RELEASE] Update to version v2.3.14
* [TASK] Database API access clean up
* [TASK] Drop support for Python 2.6 and 3.3
* [TASK] Cleanup options define and loading
* updated how source code documentation handled
* updated landscape config
* added landscape configuration
* [TASK] Basic cleanup of code base
* update doc formatting
* updated alpine version
* added .dockerignore
* added Dockerfile
* fix file permissions

2.3.13
------

* [RELEASE] Update to version v2.3.13
* [FEATURE] Update requirements
* updated version from 3 to 4
* [BUGFIX] Fix total_time column type

2.3.12
------

* [RELEASE] Update to version v2.3.12
* [TASK] Switch to oslo_config
* [FEATURE] Added Admin UI and REST APIs
* [TASK] Fixed error message formatting
* [TASK] Standards alignment with hacking
* [TASK] Requirements updates
* [TASK] Fixed error message formatting
* [TASK] Standards alignment with hacking
* [TASK] Requirements updates
* [TASK] Document updates
* [TASK] Remove intersphinx dependency
* [TASK] Upgrade version of oslo.config
* [TASK] Update README to include Waffle
* [TASK] Reduce output from update_version
* [TASK] General cleanup activities

2.3.11
------

* Update to version v2.3.11
* [TASK] General cleanup activities
* [TASK] Apply shell lint changes to update_version
* [TASK] Fix up spelling errors
* [BUGFIX] Fix capture of filename when coming from compressed file
* remove patch for what was oslo.config a bug; replaced original way of setting config_dir with set_default. Consistent response regardless of version of oslo.config
* minor change to handle the fact we do not publish the release branch to the remote, and git flow raises an exception when attempting to remove the remote branch. now catching that exception only and allowing script to continue with upload if everything else was successful

2.3.10
------

* Update to version v2.3.10
* updated release process to separate the packaging from the release via twine
* changed url from pypi to github

2.3.9
-----

* Update to version v2.3.9
* fixed minor pep8 issues within new test cases
* added more test cases
* update ChangeLog based on recent changes
* added logic to stop workflow from continuing execution when a task associated with a media file failed to further support retry
* code cleanup and simplification and duplication
* skip adding files found with the torrent if not found on filesystem to avoid processing a torrent w/o files to process; general cleanup and simplification of code
* replaced empty abstract methods with raise NotImplementedError for clarity and coverage
* converted from previous use of 1 or 0 to represent True and False when setting values to be stored in the database
* clean up to further simplify implementation of pid lockfile
* added links to requires.io
* added ignore raise NotImplementedError
* adding travis_retry during install travis config
* trying a different travis config
* added design documentation

2.3.8
-----

* Update to version v2.3.8
* updated to make sure subprocessext is patched for testing filesync
* removed log entry that resulted in breaking test code because it mocks part that checks for called once
* fixed testing class impacted by bug in oslo.config placeholder substitution
* fixed bug where execute method was not called such that rsync never happened; fixed bug where config dir was not found when defaulting to path including configuration directory
* fixed logging entries by defining logger for parser to avoid going to root logger
* fix issue where database file is not able to be opened when defaulting to configuration directory

2.3.7
-----

* Update to version v2.3.7
* fixed format of message; py26
* updated to support py26
* applied updates to support py26
* updated test cases to cover usage scenarios; added new test class to support generating sample config
* removed files from coverage that are entry point executables or copied from another library to provide coverage based on actual code from this code base
* fixed pep8 issue
* removed unnecessary docstrings in empty files
* fix ChangeLog by fixing which commit was associated with tag 2.2.4

2.3.6
-----

* Update to version v2.3.6
* test_save still causing an issue; commenting a line for now until periodic issue can be resolved

2.3.5
-----

* Update to version v2.3.5
* removed custom configuration generation code base and script
* fixed db save that fails randomly when two instances with different values not successful when asserting not equal
* fix pep8 issues
* add generation of sample config via oslo.config instead of custom version copied from oslo.incubator project
* undo travis configuration
* updating travis configuration
* removing copy of config fixture; leverage instance within oslo.config
* replaced extra imports for the purpose of making config options available; leverage library approach for importing options from other modules
* moved to using mockpatch from oslotest instead of local one
* simplified testing dependencies by leveraging oslotest which handles the setting up the base test class

2.3.4
-----

* Update to version v2.3.4
* removed unnecessary assignment of instance to variable; corrected docstring
* updated parameters to match actual abstract
* fixed TODO docstring
* updated year to 2014
* adding fetch origin as part of finish release

2.3.3
-----

* Update to version v2.3.3
* updated to tox 1.7.2 to fix posarg issue so updated tox.ini to use setup.py directly and allowed for removal of run_test.sh
* added delete tag after building with pbr; then let git flow handle tagging, merging, and pushing to git
* added support for wheel; and fix related to lazy loading of pbr
* fixed docstring causing warning from sphinx
* Update Changelog

2.3.2
-----

* Update to version v2.3.2
* fixing release process script

2.3.1
-----

* fixing up ChangeLog within docs

2.3.0
-----

* perm change; ignore
* Update to version v2.3.0
* removed deploy section; update_version.sh does this now as part of the tagging process
* updated documentation such that sphinx would format it correctly
* updated docstrings
* added classifiers for python 3.3 and 3.4
* added version badge to README
* added items related to vagrant and pycharm
* added debug to make sure check for mediafiles is working as expected
* added python34 and python33 to extend supported versions
* pep8 fix
* updated to be compliant with pyhton 3
* added TODO
* copied test code for bencode to make sure there is code coverage
* copied bencode into project to support python 3, and then updated custom parser to also support python 3
* removed pypi bencode from requirements
* copied and updated version to support python 3
* updated missing or incomplete docstrings
* moved private method to subclass where instance variable is defined
* removed unncessary priority and comparison methods
* added missing docstrings
* refactored setting log level for library code, and added missing docstrings
* removed unused parameter
* removed test case related to deleted code
* updated missing docstrings
* permissions got changed as part of move to vagrant
* corrected spelling of words in documentation
* refactored the writing of the stdout and stderr to further simplify
* replaced static method containing a single function call by calling function directly
* updated abstract to synchronize the signatures
* removed unncessary definition of variable to None
* updated process for logging stdout and stderr from external rsync process that works for both python2/python3
* leverage different name of torrents to avoid conflict between test threads
* fixed import order for pep8
* removed sorted() call as list is not sortable because the list holds classes and not instances
* removed unncessary call to getLevelName as setLevel already handles accepting named level
* include default values when accessing values from dict to support python2/python3
* updated access to dict to work for both python2 and python3
* leverage six iteritems for dict to support python2 and python3
* replaced warn with warning for python3 support
* replaced the use of map method with simple list extend method to suppot python3
* removed extra parentheses
* method expected a string, replaced None with empty string
* fixed class name
* converted print builtin calls to print function calls to be python3 compatiable
* fixed class name
* fixed naming of class
* removed extra parentheses
* simplified variable comparison against 2 values
* updated method parameter name to be different than local variable used within the outter method
* converted print builtin calls to print function calls to be python3 compatiable
* changed name of parameter to avoid collision with outter method parameter
* removed extra parentheses
* moved global variable from inside function to module level
* changed local variable that shadows builtin to more descriptive variable name

2.2.4
-----

* Update to version v2.2.4
* get_torrents_active did not take into account that the torrent contained media_files but to keep from processing the torrent and marking done and to keep query simple, added simple check if torrent contains media_files before adding to workflow list
* added script to handle packaging a new release, pushing to pypi, and releasing updates to remote git
* Fixed adding link to ChangeLog[C
* updated ChangeLog files

2.2.3
-----

* Updating version to 2.2.3
* added link to ChangeLog to published documentation

2.2.2
-----

* updated ChangeLog and tag release
* fixed the generated ChangeLog to represent the entire history Updated version to 2.2.2 as that is the next release strting
* updated requirements file to include sandman and click
* fixed bug where a downloaded file was within a subdirectory, and the subdirectory name is included in the filename cache attribute. Moved the subdirectory name to the filepath
* minor update to documentation configuration

2.2.1
-----

* updated changelog
* bumped to dot release
* test on travis-ci seemed to fail when writing to /tmp/<dir> so added in logic to create the <dir> under /tmp before trying to create files within <dir>

2.2
---

* changes added to ChangeLog
* added auto release of successfully built versions that include a tag
* mades changes such that seedbox works as package name but pypi still sees it as SeedboxManager
* updated sample configuration based on changes in the code and the removal of many unncessary options
* updated documentation to reflect the changes
* updated requirements based on changes from sqlobjects to sqlalchemy etc
* generally replaced or rewrote majority of the modules to simplify for the long run
* added test cases for cli to provide coverage
* replaced manager with cli to better refelct the purpose of the module and remove unncessary code
* added constants to hold flow states that are leveraged in multiple places throughout
* removed workaround for name of package causing issues with version; solved by update from pbr
* updated tests for common components
* updated the common components to remove unncessary code, apply minor fixes
* updated test cases to support changes within loader
* updated torrent loader to leverage new database implementation and models, and minor clean up. minor tweaks to parser
* added test cases to support the new process flow
* simplified the process/workflow to get rid of the elaborate steps to find out which task(s) to execute next and in what order. Instead of only being able to execute sync in parallel, now all tasks are executed in parallel
* added test cases for all tasks (plugins)
* simplified plugin model by migrating to stevedore and providing a simple abstract base task such that a task must only implement execute() and/or the optional is_actionable() method
* added testing to support new implementation based on sqlalchemy
* replaced SQLObjects with sqlalchemy to lay the foundation for supporting multi-threaded/multi-process with databases that include actual multiple concurrent requests. Added public object model for interacting with data without resulting in direct database interactions (fetch, create, update). Included sqlalchemy-migration to handle version the database schema
* moved gen_config to the tools directory to keep main directory clean
* added other details to setup.cfg
* PBR added '--use-mailcap' in the call to git log to load AUTHORS which is causing it to no longer be found as git log does not recognize the option. So removing the use of AUTHORS for a while
* added sample config generation anoptoin within tox
* some cleanup activities to reduce clutter and noise. Also small patch to version since my install library PBR seems to struggle with app name being different from package name
* updated README to remove a badge
* another fix to publish coverage results
* updated README
* tweaks for coverage
* trying something
* update settings for travis-ci
* minor tweaks
* documentation updates
* updating changelog and increasing version
* code fixes and cleanup
* made several updates to clean up code and added significant amount of test code to finally reach ~75% code coverage
* added test cases for options module
* Added more test cases and removed extraneous lines of code
* Added test cases for common/timeutil
* regenerated ChangeLog and generated sample configuration file
* significant refactor to simplify and become more DRY. Also reshaping the structure to align to future plans to replace the entire workflow approach currently leveraged
* Updated reference to travis ci
* Updating import from __future__ entries
* Instead of printing to stderr when the lockfile is there, simply write to the standard log to avoid having to check logs in multiple locations. Also a few pep8 updates
* Seems a variable named errno was used which took over the namespace of the imported errno module. Needed to remove the local variable to avoid clash
* Moved to leverage six instead of doing manual checks for PY2/PY3 and fixed some basic pep8 issues
* Removed old code left over as part of pssh
* MANIFEST.in had a missing 'c' so it was excluding all .py files instead of .pyc

2.0
---

* updated README
* added reference to travis-cli
* travis still
* fixing travis
* small change to get travis to work
* updated travis config and coverage config
* pep8 compliance integration with travis-ci
* fixed bug that cause version to stop working from cli
* added cli option --gen-sample so that generation of sample configuration can be accomplished via seedmgr as well as shell script stored with project
* documentation config update
* updatd documentation configuration
* Updated release info and started work on making sample config generation a cli option instead of through a shell script
* fixed setup.cfg to support upload into PyPi; ChangeLog automatic
* see previous commit with details. Moving to version 2.0
* Changed approach for configuration to simplify code and setup. Included is a generator to create a sample configuration file with help, all available options, their type, default value, and what is required

0.1.20
------

* added ability for user to specifiy filetypes in configuration file to reduce hardcoding of filetypes. The initial values are still supported by default

0.1.19
------

* fixed typo

0.1.18
------

* reved to next release version
* added logging of stacktrace in plugins

0.1.17
------

* bug fix: format(

0.1.16
------

* bug fix: forgot to escape sql input when doing select statement

0.1.15
------

* Reduced excess info logging to avoid growing logs while in cron mode. Added validate_phase plugin. The new plugin will make sure all torrents are in the proper state before allowing them to continue to the next phase. Optimized torrentparser; added dependency on Bittorrent-bencode as after performance testing it was substantially more efficient but also stricter. Therefore it will work 98% of the time and the remaiing 2% of the time we'll leverage the custom parser to extract files associated with torrent

0.1.14
------

* bumping version for next upload
* added patch to make sure using loglevel option was case insensitive
* added unittest for action module and resulted in bug fixes

0.1.13
------

* lockfile on pypi is out of date by nearly 2 years. I pulled from GitHub to get latest version. No longered required extension to lockfile
* updated README

0.1.12
------

* bugfix: date calculation to determine when to perform db back
* updated README
* updated README info

0.1.11
------

* fixed bug related to how frequently to do backups of db

0.1.10
------

* added lockfile support to make sure that when running as a cron that multiple instances do not run at the same time

0.1.9
-----

* undo change to filesync

0.1.8
-----

* general cleanup
* removed commented code

0.1.7
-----

* bug fix: variable name changed but didn't change all locations

0.1.6
-----

* updated the backup db routine to work similar to RotatingLogFiles
* renamed test folder to tests
* added shutilwhich to setup.py as dependency

0.1.5
-----

* moved purge from plugin to internals of datamanager. Deleted actual filepurge.py as it is no longer needed. Also added in dependency on shutilwhich since running as a cron made it difficult to find unrar

0.1.4
-----

* bumped the rev
* updated logext to default to user folder/directory if available; else cwd
* updated README; added new required attribute to configfile

0.1.3
-----

* found bug where if torrent was still downloading it would be marked as missing and then purged without ever doing sync. Added check to make sure it waits and checks again later. (automation will really help you find issues

0.1.1
-----

* forgot to include ez_setup.py in distribution
* no longer needed with setuptools model
* Changes to support packaging and distribution
* added LICENSE; MIT
* removed logfile option from filesync given it is now redundant since logging from the subprocess is now directly supported
* subprocess module will output to stdout/stderr but I wanted everything consistently going to logging so it can be properly controlled. So I added an extension to subprocess to handle attaching logging to the child process and created unit testing for the new module. Then updated filesync which uses rsync for remote syncing of files to leverage new module
* updated distribution related files
* deleted old test files since they are replaced will real unit test modules
* added sample config files to support testing
* Added another test set related to processing options and command line
* Started using unittest module for doing proper testing and converting some of the scripts I had been using to do proper unit testing. This was the first one
* updated readme
* made adjustment so that filecopy works the same as fileunrar, after copy create a new entry for syncing. And then within delete, simply ignore any file that does not exist to avoid any exceptions
* Bug fixes related to database backup, some extra logging

0.1
---

* adding setup/distribution related files
* Initial creation
* Initial commit
