=========
changelog
=========

--------------------------
v8.0.0-beta -> v8.0.5-beta
--------------------------

Fixes and enhancements
======================

* Improve datetime.str2time to handle microseconds 
* Improve multimedia.ffprobe.get_media_duration (return None in case of error)
* Split HelpTextToPlaceholderMixin logic to allow modify behavior by inheritance
* Fix multimedia.ffmpeg.encode (convert default_in_duration to time)
* Fix multimedia.ffmpeg.encode (may return None - out_duration)
* Fix multimedia.ffmpeg.encode (skip broken out duration)

---------------------------
v7.1.17-beta -> v8.0.0-beta
---------------------------

Compatibility breaks
====================

* Move ffmpeg and x264 modules into multimedia
* Replace unreliable ffmpeg.get_media_* functions by multimedia.ffprobe.get_media_*

Features
========

* Add module multimedia.ffprobe
* Add function datetime.str2time

---------------------------
v6.6.0-beta -> v7.1.17-beta
---------------------------

Compatibility breaks
====================

* Store command line arguments in args attribute, do not update __dict__ of the instance.

Features
========

* Add module argparse

Fixes and enhancements
======================

* Add function argparse.is_file
* Add cleanup argument to juju.boostrap
* Add docstring to method juju.ensure_num_units
* Add get_unit_public_address + properties methods to class juju.Environment (thanks @smarter)
* Add args and namespace kwargs to juju.DeploymentScenario __init__ to allow bypassing sys.arv
* Fix various bugs of juju module + various updates according to juju 1.18
* Fix subprocess.rsync
* Fix crypto.githash
* Fix handling of juju bootstrap error message in Python 3
* Default to something if key is missing in stats (x264.encode)
* Use sudo with juju status (to work around https://bugs.launchpad.net/juju-core/+bug/1237259)
* Add timeout to valid_uri

--------------------------
v5.6.3-beta -> v6.6.0-beta
--------------------------

Compatibility breaks
====================

* Improve errors and time-outs handling in juju module (for the best)
* Move socket & twisted fec generators to pytoolbox_bin

Minor compatibility breaks
==========================

* Remove deprecated flask.get_request_data (replaced by network.http.get_requests_data)
* SmartJSONEncoderV2 now filter the class attributes
* Fix SmartJSONEncoderV2!

Features
========

* Add module decorators
* Add module django.utils
* Add module x264
* Add method datetime.secs_to_time
* Add method datetime.time_ratio
* Add method ffmpeg.get_media_resolution
* Add method mongo.mongo_do
* Add method network.http.download
* Add method subprocess.git_clone_or_pull

Fixes and enhancements
======================

* Fix test_ensure_num_units, str2datetime
* Fix computation of FecReceiver.lostogram
* Fix usage of time_ratio by ffmpeg and x264 modules
* Use renamed IP class (previously IPAddress) fallback import to IPAddress
* Accept None to leave owner or group unchanged (filesystem.chown)
* Set default time-outs to None and update juju module (fixes)
* Add some arguments to recursive_copy and rsync
* Append sudo to juju bootstrap
* Add juju.Environment.wait_unit
* Improve ffmpeg module

--------------------------
v5.6.0-beta -> v5.6.3-beta
--------------------------

Fixes and enhancements
======================

* Add timeout argument to cmd()
* Remove symlink first, to avoid boring exceptions
* Add timeout to juju status !

--------------------------
v5.5.0-beta -> v5.6.0-beta
--------------------------

Features
========

* Add method validation.valid_int()

Fixes and enhancements
======================

* Add constants to juju module
* Juju bootstrap will print time as int
* Add makedirs argument to some methods of the objects of serialization
* Add user argument to method subprocess.cmd
* Add path argument to subprocess.make
* Add extra_args (list) to method subprocess.rsync

* Fix juju, serialization, subprocess modules, update tests
* Method subprocess.cmd : Handle logging.Logger as log, improve docstring, add retry loop
* Upgrade relation_ methods

---------------------------
v5.4.19-beta -> v5.5.0-beta
---------------------------

Minor compatibility breaks
==========================

* Move all django template tags into module pytooblox_tags
* Move juju methods to the Environment class

Features
========

* Add console.choice() (by kyouko-taiga)
* Add method serialization.to_file and use it to improve PickeableObject and JsoneableObject write methods.

Fixes and enhancements
======================

* Add missing MANIFEST.in
* Add new django-related modules
* Add some django mixins + template tags
* Make class django.models.GoogleMapsMixin more generic
* Add cli_output argument to subprocess.cmd
* Add size_only argument to subprocess.rsync
* Do not add hashlib to requirements if already part of the stdlib
* Fix headers + rest markup + update title
* Enhance method ffmpeg.encode
* Call log more often

---------------------------
v5.0.0-beta -> v5.4.19-beta
---------------------------

Deprecated
==========

* flask.get_request_data replaced by network.http.get_request_data

Minor compatibility breaks
==========================

* Split django module into submodules
* Rename SmartModel to AbsoluteUrlMixin

Features
========

* Embed smpte2022lib
* Add entry points (socket-fec-generator + twisted-fec-generator)
* Add commit and release scripts to make it more securely (run tests before, check sphinx ...)
* Add module network.http and classes juju.SimulatedUnit(s)
* Add module django.templatetags with getattribute method
* Add class django.models.SaveInstanceFilesMixin
* Add method django.forms.update_widget_attributes

Fixes and enhancements
======================

* Lighter list of dependencies
* Add --extra-... flags to install dependencies for the extra features/modules.
* Filter packages to avoid installing tests module !
* Fix setup.py to avoid removing tests from packages list if it did not exist.
* Add kwargs to serialization.object2json -> json.dumps
* map_marker : Convert to unicode sooner (to handle special field class)
* django.forms.SmartModelForm : Attributes & replacement class applied depending of the form field's class
* Add fill option to collections.pygal_deque.list()
* Replace range by xrange, values by itervalues, ...
* Handle datetime.date class (method datetime.dateime2epoch)
* Add suffix parameter to AbsoluteUrlMixin.get_absolute_url
* Ensure import from future of great things
* Fix docstrings

Example usage::

    sudo python setup.py install --help
    sudo python setup.py install --extra-flask

--------------------------
v4.8.7-beta -> v5.0.0-beta
--------------------------

Compatibility breaks
====================

* Remove py_ prefix of all modules & paths
* Change license (GNU GPLv3 -> EUPL 1.1)

Features
========

* Add module mongo

Fixes and enhancements
======================

* Use absolute imports
* Update classifiers
* Update README.rst

--------------------------
v4.0.0-beta -> v4.8.7-beta
--------------------------

Minor compatibility breaks
==========================

* Rename duration2secs -> total_seconds
* Rename get_request_json -> get_request_data

Features
========

* Python 3 support
* Add module py_collections
* Add module py_django
* Add method json_response2dict
* Add method make
* Add method ssh
* Greatly improve module py_juju
* Greatly improve module py_serialization

Fixes and enhancements
======================

* Update README.rst
* Update method get_request_data
* Update method map_exceptions
* Update method runtests
* Update setup.py

---------------------------
v3.10.7-beta -> v4.0.0-beta
---------------------------

Compatibility breaks
====================

* Greatly improve module py_serialization

Features
========

* Greatly improve module py_juju
* Add class TimeoutError
* Add method print_error

Fixes and enhancements
======================

* Fix setup.py
* Update cmd
* Update rsync

---------------------------
v2.1.2-beta -> v3.10.7-beta
---------------------------

Compatibility breaks
====================

* Rename module py_mock -> py_unittest
* Remove method unicode_csv_reader

Features
========

* Add module py_console
* Add module py_unicode
* Add module and method runtests
* Add class JsoneableObject
* Add method assert_raises_item
* Add method valid_uri
* Add method validate_list
* Greatly improve module py_juju
* Greatly improve setup and unit-testing

Fixes and enhancements
======================

* Fix shebangs
* Handle unicode
* Use new string formatting
* Update method map_exceptions
* Add kwargs to methods of module py_subprocess
