Python-redmine

Latest version: v2.5.0

Safety actively analyzes 681935 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 7

2.1.0

This release concentrates mostly on stability and adds small features here and there. Some of them are backwards incompatible and are marked as such. They shouldn't affect many users since most of them were used internally by Python-Redmine. A support for the Files API has been finally added, but please be sure to check it's documentation as the implementation on the Redmine side is horrible and there are things to keep in mind while working with Files API. Lastly, only until the end of May 2018 there is a chance to buy a Pro Edition for only 14.99$ instead of the usual 24.99$, this is your chance to get an edition with additional features for a good price and to support the further development of Python-Redmine, more info [here](https://python-redmine.com/editions.html#pro-edition>).

**New Features**:

- Files API support (Issue 117)

**Improvements**:

- *Backwards Incompatible:* ResourceSet's ``filter()`` method became more advanced. It is now possible to filter on all available resource attributes, to follow resource relationships and apply lookups to the filters (see [docs](https://python-redmine.com/introduction.html#methods) for details)
- ResourceManager class has been refactored:

* ``manager_class`` attribute on the ``Resource`` class can now be used to assign a separate ``ResourceManager`` to a resource, that allows outsourcing a resource specific functionality to a separate manager class (see ``WikiPageManager`` as an example)
* *Backwards Incompatible:* ``request()`` method has been removed
* ``_construct_*_url()``, ``_prepare_*_request()``, ``_process_*_response()`` methods have been added for create, update and delete methods to allow a fine-grained control over these operations

- Ability to upload file-like objects (Issue 186) (thanks to [hjpotter92](https://github.com/hjpotter92))
- Support for retrieving project's time entry activities (see [docs](https://python-redmine.com/resources/project.html#get) for details)
- Attachment ``update()`` operation support (requires Redmine >= 3.4.0)
- ``Resource.save()`` now accepts ``**attrs`` that need to be changed/set and returns ``self`` instead of a boolean ``True``, which makes it chainable, so you can now do something like ``project.save(name='foo', description='bar').export('txt', '/home/foo')``
- ``get`` operation support for News, Query, Enumeration, IssueStatus, Tracker, CustomField, ContactTag, DealStatus, DealCategory and CRMQuery resources
- ``include`` param in ``get``, ``all`` and ``filter`` operations now accepts lists and tuples instead of comma-separated string which is still accepted for backward compatibility reasons, i.e. one can use ``include=['foo', 'bar']`` instead of ``include='foo,bar'``
- It is now possible to use ``None`` and ``0`` in addition to ``''`` in ``assigned_to_id`` attribute in Issue resource if an assignee needs to be removed from an issue

**Changes**:

- *Backwards Incompatible:* Issue ``all`` operation now really returns all issues, i.e. both open and closed, instead of only returning open issues in previous versions due to the respect to Redmine's standard behaviour
- *Backwards Incompatible:* Instead of only returning a token string, ``upload()`` method was modified to return a dict that contains all the data for an upload returned from Redmine, i.e. id and token for Redmine >= 3.4.0, token only for Redmine < 3.4.0. Also it is now possible to use this token and pass it using a ``token`` key instead of the ``path`` key with path to the file in ``uploads`` parameter when doing an upload, this gives more control over the uploading process if needed
- *Backwards Incompatible:* Removed ``resource_paths`` argument from Redmine object since ``ResourceManager`` now uses a special resource registry, to which, all resources that inherit from any Python-Redmine resource are being automatically added
- *Backwards Incompatible:* Removed ``container_many`` in favor of ``container_filter``, ``container_create`` and ``container_update`` attributes on ``Resource`` object to allow more fine-grained resource setup
- *Backwards Incompatible:* ``return_raw`` parameter on ``engine.request()`` and ``engine.process_response()`` methods has been removed in favor of ``return_raw_response`` attribute on engine object
- Updated bundled requests library to v2.15.1

**Bugfixes**:

- Support 204 status code when deleting a resource (Issue 189) (thanks to [dotSlashLu](https://github.com/dotSlashLu>))
- Raise ``ValidationError`` instead of not helpful ``TypeError`` exception when trying to create a WikiPage resource that already exists (Issue 182)
- Enumeration, Version, Group and Notes ``custom_fields`` attribute was returned as a list of dicts instead of being converted to ``ResourceSet`` object
- Downloads were downloaded fully into memory instead of being streamed as needed
- ``ResourceRequirementsError`` exception was broken since v2.0.0
- RedmineUP CRM Contact and Deal resources export functionality didn't work
- RedmineUP CRM Contact and Deal resources sometimes weren't converted to Resource objects using Search API

**Documentation**:

- Mentioned support for ``generate_password`` and ``send_information`` in User's resource create/update methods, ``status`` in User's resource update method, ``parent_id`` in Issue's filter method and ``include`` in Issue's all method

2.0.2

**Bugfixes**:

- Filter doesn't work when there are > 100 resources requested (Issue 175) (thanks to [niwatolli3](https://github.com/niwatolli3))

2.0.1

- Fix PyPI package

2.0.0

This version brings a lot of new features and changes, some of them are backward-incompatible, so please look carefully at the changelog below to find out what needs to be changed in your code to make it work with this version. Also Python-Redmine now comes in 2 editions: Standard and Pro, please have a look at this [document](https://python-redmine.com/editions.html) for more details. Documentation was also significantly rewritten, so it is recommended to reread it even if you are an experienced Python-Redmine user.

**New Features**:

- RedmineUP [Checklist plugin](https://www.redmineup.com/pages/plugins/checklists) support
- [Request Engines](https://python-redmine.com/advanced/request_engines.html) support. It is now possible to create engines to define how requests to Redmine are made, e.g. synchronous (one by one) or asynchronous using threads or processes etc.
- ``redmine.session()`` context manager which allows to temporary redefine engine's behaviour
- Search API support (Issue 138)
- Export functionality (Issue 58)
- REDMINE_USE_EXTERNAL_REQUESTS environmental variable for emergency cases which allows to use external requests instead of bundled one even if external requests version is lower than the bundled one
- Wrong HTTP protocol usage detector, e.g. one use HTTP when HTTPS should be used

**Improvements**:

- ResourceSet objects were completely rewritten:

* ``ResourceSet`` object that was already sliced now supports reslicing
* ``ResourceSet`` object's ``delete()``, ``update()``, ``filter()`` and ``get()`` methods have been optimized for speed
* ``ResourceSet`` object's ``delete()`` and ``update()`` methods now call the corresponding Resource's ``pre_*()`` and ``post_*()`` methods
* ``ResourceSet`` object's ``get()`` and ``filter()`` methods now supports non-integer id's, e.g. WikiPage's title can now be used with it
* ``ValuesResourceSet`` class has been removed
* ``ResourceSet.values()`` method now returns an iterable of dicts instead of ``ValuesResourceSet`` object
* ``ResourceSet.values_list()`` method has been added which returns an iterable of tuples with Resource values or single values if flattened, i.e. ``flat=True``

- New ``Resource`` object methods:

* ``delete()`` deletes current resource from Redmine
* ``pre_delete()`` and ``post_delete()`` can be used to execute tasks that should be done before/after deleting the resource through ``delete()`` method
* ``bulk_decode()``, ``bulk_encode()``, ``decode()`` and ``encode()`` which are used to translate attributes of the resource to/from Python/Redmine

- Attachment ``delete()`` method support (requires Redmine >= 3.3.0)
- RedmineUP CRM Note resource now provides ``type`` attribute which shows text representation of ``type_id``
- RedmineUP CRM DealStatus resource now provides ``status`` attribute which shows text representation of ``status_type``
- WikiPage resource now provides ``project_id`` attribute
- Unicode handling was significantly rewritten and shouldn't cause any more troubles
- ``UnknownError`` exception now contains ``status_code`` attribute which can be used to handle the exception instead of parsing code from exception's text
- Sync engine's speed improved to 8-12% depending on the amount of resources fetched

**Changes**:

- Renamed package name from ``redmine`` to ``redminelib``
- Resource class attributes that were previously tuples are now lists
- ``_Resource`` class renamed to ``Resource``
- ``Redmine.custom_resource_paths`` keyword argument renamed to ``resource_paths``
- ``Redmine.download()`` method now returns a [requests.Response](http://docs.python-requests.org/en/latest/api/#requests.Response) object directly instead of ``iter_content()`` method if a ``savepath`` param wasn't provided, this gives user even more control over response data
- ``Resource.refresh()`` now really refreshes itself instead of returning a new refreshed resource, to get the previous behaviour use ``itself`` param, e.g. ``Resource.refresh(itself=False)``
- Removed Python 3.2 support
- Removed ``container_filter``, ``container_create`` and ``container_update`` attributes on ``Resource`` object in favor of ``container_many`` attribute
- Removed ``Resource.translate_params()`` and ``ResourceManager.prepare_params()`` in favor of ``Resource.bulk_decode()``
- Removed ``is_unicode()``, ``is_string()`` and ``to_string()`` from ``redminelib.utilities``
- Updated bundled requests library to v2.13.0

**Bugfixes**:

- Infinite loop when uploading zero-length files (Issue 152)
- Unsupported Redmine resource error while trying to use Python-Redmine without installation (Issue 156)
- It was impossible to set ``data``, ``params`` and ``headers`` via ``requests`` keyword argument on Redmine object
- Calling ``str()`` or ``repr()`` on a Resource was giving incorrect results if exception raising was turned off for a resource

**Documentation**:

- Switched to the alabaster theme
- Added new sections:

* [Editions](https://python-redmine.com/editions.html)
* [Introduction](https://python-redmine.com/introduction.html)
* [Request Engines](https://python-redmine.com/advanced/request_engines.html)

- Added info about Issue Journals (Issue 120)
- Added note about open/closed issues (Issue 136)
- Added note about regexp custom field filter (Issue 164)
- Added some new information here and there

1.5.1

- Changed: Updated bundled requests package to 2.9.1
- Changed: Issue 124 (`project.url` now uses `identifier` rather than `id` to generate url for the project resource)
- Fixed: Issue 122 (`ValidationError` for empty custom field values was possible under some circumstances with Redmine < 2.5.0)
- Fixed: Issue 112 (`UnicodeEncodeError` on Python 2 if `resource_id` was of `unicode` type) (thanks to [Digenis](https://github.com/Digenis))

1.5.0

- Added: Documented support for new fields and values in User, Issue and IssueRelation resources
- Added: Issue 109 (Smart imports for vendored packages (see [docs](https://python-redmine.com/installation.html#dependencies) for details)
- Added: Issue 115 (File upload support for WikiPage resource)

Page 2 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.