Package: python-redmine
Python-Redmine is a library for communicating with aRedmineproject management application. Redmine exposes some of its data viaREST APIfor which Python-Redmine provides
a simple but powerful Pythonic API inspired by a well-knownDjango ORM:>>>fromredminelibimportRedmine>>>redmine=Redmine('http://demo.redmine.org',username='foo',password='bar')>>>project=redmine.project.get('vacation')>>>project.id30404>>>project.identifier'vacation'>>>project.created_ondatetime.datetime(2013,12,31,13,27,47)>>>project.issues<redminelib.resultsets.ResourceSetobjectwithIssueresources>>>>project.issues[0]<redminelib.resources.Issue#34441 "Vacation">>>>dir(project.issues[0])['assigned_to','author','created_on','description','done_ratio','due_date','estimated_hours','id','priority','project','relations','start_date','status','subject','time_entries','tracker','updated_on']>>>project.issues[0].subject'Vacation'>>>project.issues[0].time_entries<redminelib.resultsets.ResourceSetobjectwithTimeEntryresources>FeaturesSupports 100% of Redmine APISupports external Redmine plugins APISupports Python 3.7 - 3.11 and PyPy3Supports different request enginesExtendable via custom resources and custom request enginesExtensively documentedProvides ORM-style Pythonic APIAnd many more…InstallationStandard EditionThe recommended way to install is from Python Package Index (PyPI) withpip:$pipinstallpython-redminePro EditionLicense for a Pro Edition can be boughthere.
You will receive an email with all the details regarding Pro Edition installation process.DocumentationDocumentation is available athttps://python-redmine.com.Contacts and SupportSupport for Standard Edition is provided viaGitHubonly, while support for Pro Edition is provided both viaGitHubandsupport@python-redmine.com. Be sure to write from email that was specified during the purchase procedure.Copyright and LicensePython-Redmine Standard Edition is licensed under Apache 2.0 license. Python-Redmine Pro Edition is licensed
under the Python-Redmine Pro Edition 1.0 license. Check theLicensefor details.Changelog2.4.0 (2023-01-18)Deprecations:Requests version required >= 2.28.2Removed Python 2.7, 3.5, 3.6 support as it’s not supported by Requests anymoreRemoved support forpython setup.py testas it became deprecated by setuptoolsNew Features:Pro Edition:RedmineUPHelpdesk pluginsupport
(Issue #116)Pro Edition:RedmineUPInvoices pluginsupport
(Issue #301)Timezone support (seedocsfor details)
(Issue #271)Improvements:Added support for Python 3.10, 3.11 and latest PyPyAdded support forallowed_statusestoincludeparam and on demand includes for Issue resource (requires
Redmine >= 5.0.0)Added support forissue_custom_fieldstoincludeparam and on demand includes for Project resource (requires
Redmine >= 4.2.0)Added support forcommentsandattachmentstoincludeparam and on demand includes for News resource
(requires Redmine >= 4.1.0)Pro Edition:Added support for RedmineUP Contactprojectstoincludeparam and on demand includes forall()andfilter()operationsPro Edition:Added support for RedmineUP Notecreate(),update(),delete()operations (seedocsfor details)Added support for Projectclose(),reopen(),archive(),unarchive()operations (seedocsfor details, requires Redmine >= 5.0.0)Added support for updating and deleting issue journals (seedocsfor details, requires Redmine >= 5.0.0)Changes:Backwards Incompatible:Switched to pytest instead of nose as nose project is dead
(Issue #312)Backwards Incompatible:Removed usage of distutils.LooseVersion internally since it became deprecated and
caused warnings, because of that all version info internally is now being represented as tuples and not strings
as beforeBugfixes:Stop raisingResourceAttrErrorfor attributes that actually exist, but their value isNone(Issue #261)Pro Edition:RedmineUP Deal resourcerelated_contactsattribute was returned as a list instead of being converted to
ResourceSet objectProject resourcedefault_assigneeattribute was returned as a dict instead of being converted to
Resource objectProject resourcetime_entry_activitiesattribute was returned as a list instead of being converted to
ResourceSet objectDocumentation:Document requirement ofproject_idparam forquery_idfilter (Issue #285) (thanks toDoezer)Mentioned support foruser_idin TimeEntry’s resource create/update (Issue #298)Mentioned support for additional scopes for Search API2.3.0 (2020-05-21)Deprecations:Requests version required >= 2.23.0Removed Python 3.4 support as it’s not supported by Requests anymoreImprovements:Support custom filename inredmine.upload()Support forget()andupdate()operations for/my/accountendpoint which doesn’t require admin
privileges by usingmeas an id, i.e.redmine.user.get('me')orredmine.user.update('me',firstname='John')(requires Redmine >= 4.1.0)Newscreate(),update(),delete()operations support (requires Redmine >= 4.1.0)ResourceSet’sexport()method now supportscolumnskeyword argument which can be either an iterable
of column names, an “all” string which tells Python-Redmine to export all available columns, “all_gui” string
for GUI like behaviour or iterable of elements with “all_gui” string and additional columns to exportAdded support for special characters in WikiPage titles (Issue #222) (thanks toRadek Czajka)Addedreturn_responseandignore_responseparameters to engine which allow to skip response processing
and speed up the create/update/delete operation in case response body isn’t needed (seedocsfor details)Bugfixes:User’ssend_informationfield wasn’t sent correctly to Redmine so account information emails were
never sent (Issue #227) (thanks towodny)Project resourcedefault_versionattribute was returned as a dict instead of being converted to
Resource objectResource object was leaking memory during initialization (Issue #257) (thanks toyihli)Documentation:Introduced detailed parameter list forredmine.sessionMentioned support foradminin User’s resource create/update2.2.1 (2019-02-28)Bugfixes:ProjectMembership resourcegroupattribute was returned as a dict instead of being converted to
Resource object (Issue #220) (thanks
toSamuel Harmer)2.2.0 (2019-01-13)Deprecations:Removed vendored Requests package and make it an external dependency as Requests did
the same with its own dependenciesRemoved Python 2.6 and 3.3 support as they’re not supported by Requests anymoreImprovements:PerformanceWarningwill be issued when Python-Redmine does some unnecessary work under the hood to fix the
clients code problemsBugfixes:Redmine.upload()fails under certain circumstances when used with a file-like object and it contains unicode
instead of bytes (Issue #216)Redmine.session()doesn’t restore previous engine if fails (Issue #211) (thanks toDmitry Logvinenko)2.1.1 (2018-05-02)Fix PyPI package2.1.0 (2018-05-02)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 its 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 infohere.New Features:Files API support (Issue #117)Improvements:Backwards Incompatible:ResourceSet’sfilter()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 (seedocsfor details)ResourceManager class has been refactored:manager_classattribute on theResourceclass can now be used to assign a separateResourceManagerto a resource, that allows outsourcing a resource specific functionality to a
separate manager class (seeWikiPageManageras 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 operationsAbility to upload file-like objects (Issue #186) (thanks tohjpotter92)Support for retrieving project’s time entry activities (seedocsfor details)Attachmentupdate()operation support (requires Redmine >= 3.4.0)Resource.save()now accepts**attrsthat need to be changed/set and returnsselfinstead of a
booleanTrue, which makes it chainable, so you can now do something likeproject.save(name='foo',description='bar').export('txt','/home/foo')getoperation support for News, Query, Enumeration, IssueStatus, Tracker, CustomField, ContactTag,
DealStatus, DealCategory and CRMQuery resourcesincludeparam inget,allandfilteroperations now accepts lists and tuples instead of
comma-separated string which is still accepted for backward compatibility reasons, i.e. one can useinclude=['foo','bar']instead ofinclude='foo,bar'It is now possible to useNoneand0in addition to''inassigned_to_idattribute in
Issue resource if an assignee needs to be removed from an issueChanges:Backwards Incompatible:Issuealloperation 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 behaviourBackwards 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 atokenkey
instead of thepathkey with path to the file inuploadsparameter when doing an upload, this gives
more control over the uploading process if neededBackwards Incompatible:Removedresource_pathsargument from Redmine object sinceResourceManagernow uses a special resource registry, to which, all resources that inherit from any Python-Redmine resource
are being automatically addedBackwards Incompatible:Removedcontainer_manyin favor ofcontainer_filter,container_createandcontainer_updateattributes onResourceobject to allow more fine-grained resource setupBackwards Incompatible:return_rawparameter onengine.request()andengine.process_response()methods has been removed in favor ofreturn_raw_responseattribute on engine objectUpdated bundled requests library to v2.15.1Bugfixes:Support 204 status code when deleting a resource (Issue #189) (thanks todotSlashLu)RaiseValidationErrorinstead of not helpfulTypeErrorexception when trying to create a WikiPage
resource that already exists (Issue #182)Enumeration, Version, Group and Notescustom_fieldsattribute was returned as a list of dicts instead
of being converted toResourceSetobjectDownloads were downloaded fully into memory instead of being streamed as neededResourceRequirementsErrorexception was broken since v2.0.0Pro Edition:RedmineUP CRM Contact and Deal resources export functionality didn’t workPro Edition:RedmineUP CRM Contact and Deal resources sometimes weren’t converted to Resource objects using Search APIDocumentation:Mentioned support forgenerate_passwordandsend_informationin User’s resource create/update
methods,statusin User’s resource update method,parent_idin Issue’s filter method andincludein Issue’s all method2.0.2 (2017-04-19)Bugfixes:Filter doesn’t work when there are > 100 resources requested (Issue #175) (thanks toniwatolli3)2.0.1 (2017-04-10)Fix PyPI package2.0.0 (2017-04-10)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
thisdocumentfor 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:Pro Edition:RedmineUPChecklist pluginsupportRequest Enginessupport. 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 etcredmine.session()context manager which allows to temporary redefine engine’s behaviourSearch 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 oneWrong HTTP protocol usage detector, e.g. one use HTTP when HTTPS should be usedImprovements:ResourceSet objects were completely rewritten:ResourceSetobject that was already sliced now supports reslicingResourceSetobject’sdelete(),update(),filter()andget()methods have been
optimized for speedResourceSetobject’sdelete()andupdate()methods now call the corresponding Resource’spre_*()andpost_*()methodsResourceSetobject’sget()andfilter()methods now supports non-integer id’s, e.g.
WikiPage’s title can now be used with itBackwards Incompatible:ValuesResourceSetclass has been removedBackwards Incompatible:ResourceSet.values()method now returns an iterable of dicts instead ofValuesResourceSetobjectResourceSet.values_list()method has been added which returns an iterable of tuples with Resource
values or single values if flattened, i.e.flat=TrueNewResourceobject methods:delete()deletes current resource from Redminepre_delete()andpost_delete()can be used to execute tasks that should be done before/after
deleting the resource throughdelete()methodbulk_decode(),bulk_encode(),decode()andencode()which are used to translate
attributes of the resource to/from Python/RedmineAttachmentdelete()method support (requires Redmine >= 3.3.0)Pro Edition:RedmineUP CRM Note resource now providestypeattribute which shows text representation oftype_idPro Edition:RedmineUP CRM DealStatus resource now providesstatusattribute which shows text representation ofstatus_typeWikiPage resource now providesproject_idattributeUnicode handling was significantly rewritten and shouldn’t cause any more troublesUnknownErrorexception now containsstatus_codeattribute which can be used to handle the
exception instead of parsing code from exception’s textSync engine’s speed improved to 8-12% depending on the amount of resources fetchedChanges:Backwards Incompatible:Renamed package name fromredminetoredminelibResource class attributes that were previously tuples are now listsBackwards Incompatible:_Resourceclass renamed toResourceBackwards Incompatible:Redmine.custom_resource_pathskeyword argument renamed toresource_pathsBackwards Incompatible:Redmine.download()method now returns arequests.Responseobject directly instead ofiter_content()method if asavepathparam wasn’t provided, this gives user even more control over
response dataBackwards Incompatible:Resource.refresh()now really refreshes itself instead of returning a new
refreshed resource, to get the previous behaviour useitselfparam, e.g.Resource.refresh(itself=False)Backwards Incompatible:Removed Python 3.2 supportBackwards Incompatible:Removedcontainer_filter,container_createandcontainer_updateattributes
onResourceobject in favor ofcontainer_manyattributeBackwards Incompatible:RemovedResource.translate_params()andResourceManager.prepare_params()in
favor ofResource.bulk_decode()Backwards Incompatible:Removedis_unicode(),is_string()andto_string()fromredminelib.utilitiesUpdated bundled requests library to v2.13.0Bugfixes: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 setdata,paramsandheadersviarequestskeyword argument on
Redmine objectCallingstr()orrepr()on a Resource was giving incorrect results if exception raising
was turned off for a resourceDocumentation:Switched to the alabaster themeAdded new sections:EditionsIntroductionRequest EnginesAdded 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 there1.5.1 (2016-03-27)Changed: Updated bundled requests package to 2.9.1Changed:Issue #124(project.urlnow usesidentifierrather thanidto generate url for the project resource)Fixed:Issue #122(ValidationErrorfor
empty custom field values was possible under some circumstances with Redmine < 2.5.0)Fixed:Issue #112(UnicodeEncodeErroron Python 2 ifresource_idwas ofunicodetype) (thanks toDigenis)1.5.0 (2015-11-26)Added: Documented support for new fields and values in User, Issue and IssueRelation resourcesAdded:Issue #109(Smart imports for
vendored packages (seedocsfor details)Added:Issue #115(File upload support
for WikiPage resource)1.4.0 (2015-10-18)Added:Requestsis now embedded into Python-RedmineAdded: Python-Redmine is now embeddable to other librariesFixed: Previous release was broken on PyPI1.3.0 (2015-10-18)Added:Issue #108(Tests are now
built-in into source package distributed via PyPI)1.2.0 (2015-07-09)Added:wheelsupportAdded:Issue #93(JSONDecodeErrorexception now contains aresponseattribute which can be inspected to identify the cause of the
exception)Added:Issue #98(Support for setting
WikiPage resource parent title and converting parent attribute to Resource object instead of being
a dict)1.1.2 (2015-05-20)Fixed:Issue #90(Python-Redmine
fails to install on systems with LC_ALL=C) (thanks tospikergit1)1.1.1 (2015-03-26)Fixed:Issue #85(Python-Redmine
was trying to convert field to date/datetime even when it shouldn’t, i.e. if a field looked like
YYYY-MM-DD but wasn’t actually a date/datetime field, e.g. wiki page title or issue subject)1.1.0 (2015-02-20)Added: PyPy2/3 is now officially supportedAdded: Introducedenabled_moduleson demand include in Project resourceFixed:Issue #78(Redmine <2.5.2
returns only single tracker instead of a list of all available trackers when requested from
a CustomField resource which caused an Exception in Python-Redmine, seethisfor details)Fixed:Issue #80(If a project
is read-only or doesn’t have CRM plugin enabled, an attempt to add/remove Contact resource
to/from it will lead to improper error message)Fixed:Issue #81(Contact’s
resourcetag_listattribute was always splitted into single chars) (thanks toAlexander
Loechel)1.0.3 (2015-02-03)Fixed:Issue #72(If an exception is
raised during JSON decoding process, it should be catched and reraised as Python-Redmine’s own
exception, i.eredmine.exceptions.JSONDecodeError)Fixed:Issue #76(It was impossible
to retrieve more than 100 resources for resources which don’t support limit/offset natively by
Redmine, i.e. this functionality is emulated by Python-Redmine, e.g. WikiPage, Groups, Roles etc)1.0.2 (2014-11-13)Fixed:Issue #55(TypeError was
raised during processing validation errors from Redmine when one of the errors was returned as
a list)Fixed:Issue #59(Raise ForbiddenError
when a 403 is encountered) (thanks toRick Harris)Fixed:Issue #64(Redmine and Resource
classes weren’t picklable) (thanks toRick Harris)Fixed: A ResourceSet object with a limit=100, actually returned 125 Resource objects1.0.1 (2014-09-23)Fixed:Issue #50(IssueJournal’snotesattribute was converted to Note resource by mistake, bug was introduced in v1.0.0)1.0.0 (2014-09-22)Added: Support for theCRM pluginresources:ContactContactTagNoteDealDealStatusDealCategoryCrmQueryAdded: Introduced new relations for the following resource objects:Project - time_entries, deals, contacts and deal_categories relationsUser - issues, time_entries, deals and contacts relationsTracker - issues relationIssueStatus - issues relationAdded: Introduced avalues()method in a ResourceSet which returns ValuesResourceSet - a
ResourceSet subclass that returns dictionaries when used as an iterable, rather than resource-instance
objects (seedocsfor details)Added: Introducedupdate()anddelete()methods in a ResourceSet object which allow to
bulk update or bulk delete all resources in a ResourceSet object (seedocsfor details)Fixed: It was impossible to use ResourceSet’sget()andfilter()methods with WikiPage
resourceFixed: Several small fixes and enhancements here and there0.9.0 (2014-09-11)Added: Introduced support for file downloads (seedocsfor details)Added: Introduced new_Resource.requirementsclass attribute where all Redmine plugins
required by resource should be listed (preparations to support non-native resources)Added: New exceptions:ResourceRequirementsErrorFixed: It was impossible to set a custom field of date/datetime type using date/datetime
Python objectsFixed:Issue #46(A UnicodeEncodeError was raised in Python 2.x while trying to access aurlproperty of
a WikiPage resource if it contained non-ascii characters)0.8.4 (2014-08-08)Added: Support for anonymous Attachment resource (i.e. attachment withidattr only)Fixed:Issue #42(It was
impossible to create a Project resource vianew()method)0.8.3 (2014-08-01)Fixed:Issue #39(It was
impossible to save custom_fields in User resource vianew()method)0.8.2 (2014-05-27)Added: ResourceSet’sget()method now supports adefaultkeyword argument which is
returned when a requested Resource can’t be found in a ResourceSet and defaults toNone,
previously this was hardcoded toNoneAdded: It is now possible to usegetattr()with default value without raising aResourceAttrErrorwhen calling non-existent resource attribute, seeIssue #30for details (thanks tohsum)Fixed:Issue #31(Unlimited
recursion was possible in some situations when on demand includes were used)0.8.1 (2014-04-02)Added: New exceptions:RequestEntityTooLargeErrorUnknownErrorFixed:Issue #27(Project and
Issue resourcesparentattribute was returned as a dict instead of being converted to
Resource object)0.8.0 (2014-03-27)Added: Introduced the detection of conflicting packages, i.e. if a conflicting package is
found (PyRedmineWS at this time is the only one), the installation procedure will be aborted
and a warning message will be shown with the detailed description of the problemAdded: Introduced new_Resource._membersclass attribute where all instance attributes
which are not started with underscore should be listed. This will resolve recursion issues
in custom resources because of how__setattr__()works in PythonChanged:_Resource.attributesrenamed to_Resource._attributesFixed: Python-Redmine was unable to upload any binary filesFixed:Issue #20(Lowered
Requests version requirements. Python-Redmine now requires Requests starting from 0.12.1
instead of 2.1.0 in previous versions)Fixed:Issue #23(File uploads
viaupdate()method didn’t work)0.7.2 (2014-03-17)Fixed:Issue #19(Resources
obtained viafilter()andall()methods have incomplete url attribute)Fixed: Redmine server url with forward slash could cause errors in rare casesFixed: Python-Redmine was incorrectly raisingResourceAttrErrorwhen trying to callrepr()on a News resource0.7.1 (2014-03-14)Fixed:Issue #16(When a resource
was created via anew()method, the next resource created after that inherited all the
attribute values of the previous resource)0.7.0 (2014-03-12)Added: WikiPage resource now automatically requests all of its available attributes from
Redmine in case if some of them are not available in an existent resource objectAdded: Support for setting date/datetime resource attributes using date/datetime Python objectsAdded: Support for using date/datetime Python objects in all ResourceManager methods, i.e.new(),create(),update(),delete(),get(),all(),filter()Fixed:Issue #14(Python-Redmine
was incorrectly raisingResourceAttrErrorwhen trying to callrepr(),str()andint()on resources, created vianew()method)0.6.2 (2014-03-09)Fixed: Project resourcestatusattribute was converted to IssueStatus resource by mistake0.6.1 (2014-02-27)Fixed:Issue #10(Python
Redmine was incorrectly raisingResourceAttrErrorwhile creating some resources vianew()method)0.6.0 (2014-02-19)Added:Redmine.auth()shortcut for the case if we just want to check if user provided
valid auth credentials, can be used for user authentication on external resource based on
Redmine user database (seedocsfor details)Fixed:JSONDecodeErrorwas raised in some Redmine versions during some create/update
operations (thanks to0x55aa)Fixed: User resourcestatusattribute was converted to IssueStatus resource by mistake0.5.0 (2014-02-09)Added: An ability to create custom resources which allow to easily redefine the behaviour
of existing resources (seedocsfor details)Added: An ability to add/remove watcher to/from issue (seedocsfor details)Added: An ability to add/remove users to/from group (seedocsfor details)0.4.0 (2014-02-08)Added: New exceptions:ConflictErrorReadonlyAttrErrorResultSetTotalCountErrorCustomFieldValueErrorAdded: Update functionality viaupdate()andsave()methods for resources (seedocsfor details):UserGroupIssueCategoryVersionTimeEntryProjectMembershipWikiPageProjectIssueAdded: Limit/offset support viaall()andfilter()methods for resources that
doesn’t support that feature via Redmine:IssueRelationVersionWikiPageIssueStatusTrackerEnumerationIssueCategoryRoleGroupCustomFieldAdded: On demand includes, e.g. in addition toredmine.group.get(1,include='users')users for a group can also be retrieved on demand viagroup.usersif include wasn’t set
(seedocsfor details)Added:total_countattribute to ResourceSet object which holds the total number
of resources for the current resource type available in Redmine (thanks toAndrei Avram)Added: An ability to returnNoneinstead of raising aResourceAttrErrorfor all
or selected resource objects viaraise_attr_exceptionkwarg on Redmine object (seedocsfor
details orIssue #6)Added:pre_create(),post_create(),pre_update(),post_update()resource
object methods which can be used to execute tasks that should be done before/after
creating/updating the resource throughsave()methodAdded: Allow to create resources in alternative way vianew()method (seedocsfor details)Added: Allow daterange TimeEntry resource filtering viafrom_dateandto_datekeyword arguments (thanks toAntoni Aloy)Added: An ability to retrieve Issue version viaversionattribute in addition tofixed_versionto be more obviousChanged: Documentation for resources rewritten from scratch to be more understandableFixed: Saving custom fields to Redmine didn’t work in some situationsFixed: Issue’sfixed_versionattribute was retrieved as dict instead of Version resource
objectFixed: Resource relations were requested from Redmine every time instead of caching the
result after first requestFixed:Issue #2(limit/offset
as keyword arguments were broken)Fixed:Issue #5(Version
resourcestatusattribute was converted to IssueStatus resource by mistake) (thanks
toAndrei Avram)Fixed: A lot of small fixes, enhancements and refactoring here and there0.3.1 (2014-01-23)Added: An ability to pass Requests parameters as a dictionary viarequestskeyword
argument on Redmine initialization, i.e. Redmine(’http://redmine.url’, requests={}).Fixed:Issue #1(unable
to connect to Redmine server with invalid ssl certificate).0.3.0 (2014-01-18)Added: Delete functionality viadelete()method for resources (seedocsfor details):UserGroupIssueCategoryVersionTimeEntryIssueRelationProjectMembershipWikiPageProjectIssueChanged: ResourceManagerget()method now raises aValidationErrorexception if
required keyword arguments aren’t passed0.2.0 (2014-01-16)Added: New exceptions:ServerErrorNoFileErrorValidationErrorVersionMismatchErrorResourceNoFieldsProvidedErrorResourceNotFoundErrorAdded: Create functionality viacreate()method for resources (seedocsfor details):UserGroupIssueCategoryVersionTimeEntryIssueRelationProjectMembershipWikiPageProjectIssueAdded: File upload support, seeupload()method in Redmine classAdded: Integer representation to all resources, i.e.__int__()Added: Informal string representation to all resources, i.e.__str__()Changed: Renamedversionattribute toredmine_versionin all resources to avoid
name intersectionsChanged: ResourceManagerget()method now raises aResourceNotFoundErrorexception
if resource wasn’t found instead of returning None in previous versionsChanged: reimplemented fix for__repr__()from 0.1.1Fixed: Conversion of issue priorities to enumeration resource object didn’t work0.1.1 (2014-01-10)Added: Python 2.6 supportChanged: WikiPage resourcerefresh()method now automatically determines its project_idFixed: Resource representation, i.e.__repr__(), was broken in Python 2.7Fixed:dir()call on a resource object didn’t work in Python 3.20.1.0 (2014-01-09)Initial release