All Versions
73
Latest Version
Avg Release Cycle
36 days
Latest Release
-
Changelog History
Page 3
Changelog History
Page 3
-
v3.3.1 Changes
October 21, 2020- Allow overriding
dns.resolver.Resolver
class attributes viaAutodiscovery.DNS_RESOLVER_ATTRS
.
- Allow overriding
-
v3.3.0 Changes
October 16, 2020- Switch
EWSTimeZone
to be implemented on top of the newzoneinfo
module in Python 3.9 instead ofpytz
.backports.zoneinfo
is used for earlier versions of Python. This means that theΓWSTimeZone
methodstimezone()
,normalize()
andlocalize()
methods are now deprecated. - π Add
EWSTimeZone.from_dateutil()
to support convertingdateutil.tz
timezones toEWSTimeZone
. - π Dropped support for Python 3.5 which is EOL per September 2020.
- Added support for
CalendaItem.appointment_state
,CalendaItem.conflicting_meetings
andCalendarItem.adjacent_meetings
fields. - Added support for the
Message.reminder_message_data
field. - Added support for
Contact.manager_mailbox
,Contact.direct_reports
andContact.complete_name
fields. - π Added support for
Item.response_objects
field. - Changed
Task.due_date
andTas.start_date
fields from datetime to date fields, since the time was being truncated anyway by the server. - π Added support for
Task.recurrence
field. - Added read-only support for
Contact.user_smime_certificate
andContact.ms_exchange_certificate
. This means that all fields on all item types are now supported.
- Switch
-
v3.2.1 Changes
August 03, 2020- π» Fix bug leading to an exception in
CalendarItem.cancel()
. - Improve stability of
.order_by()
in edge cases where sorting must be done client-side. - Allow increasing the session pool-size dynamically.
- Change semantics of
.filter(foo__in=[])
to return an empty result. This was previously undefined behavior. Now we adopt the behaviour of Django in this case. This is still undefined behavior for list-type fields. - π Moved documentation to GitHub Pages and auto-documentation generated by
pdoc3
.
- π» Fix bug leading to an exception in
-
v3.2.0 Changes
May 11, 2020- π Remove use of
ThreadPool
objects. Threads were used to implement async HTTP requests, but were creating massive memory leaks. Async requests should be reimplemented using a real async HTTP request package, so this is just an emergency fix. This also lowers the defaultProtocol.SESSION_POOLSIZE
to 1 because no internal code is running multi-threaded anymore. - All-day calendar items (created as
CalendarItem(is_all_day=True, ...)
) now acceptEWSDate
instances for thestart
andend
values. Similarly, all-day calendar items fetched from the server now returnstart
andend
values asEWSDate
instances. In this case, start and end values are inclusive; a one-day event starts and ends on the sameEWSDate
value. - π Add support for
RecurringMasterItemId
andOccurrenceItemId
elements that allow to request the master recurrence from aCalendarItem
occurrence, and to request a specific occurrence from aCalendarItem
master recurrence.CalendarItem.master_recurrence()
andCalendarItem.occurrence(some_occurrence_index)
methods were added to aid this traversal.some_occurrence_index
in the last method specifies which item in the list of occurrences to target;CalendarItem.occurrence(3)
gets the third occurrence in the recurrence. - Change
Contact.birthday
andContact.wedding_anniversary
fromEWSDateTime
toEWSDate
fields. EWS still expects and sends datetime values but has started to reset the time part to 11:59. Dates are a better match for these two fields anyway. - π Remove support for
len(some_queryset)
. It had the nasty side-effect of forcinglist(some_queryset)
to run the query twice, once for pre-allocating the list via the result oflen(some_queryset)
, and then once more to fetch the results. All occurrences oflen(some_queryset)
can be replaced withsome_queryset.count()
. Unfortunately, there is no way to keep backwards-compatibility for this feature. - Added
Account.identity
, an attribute to contain extra information for impersonation. SettingAccount.identity.upn
orAccount.identity.sid
removes the need for an AD lookup on every request.upn
will often be the same asprimary_smtp_address
, but it is not guaranteed. If you have access to your organization's AD servers, you can look up these values once and add them to yourAccount
object to improve performance of the following requests. - π Added support for CBA authentication
- π Remove use of
-
v3.1.1 Changes
January 23, 2020- The
max_wait
argument toFaultTolerance
changed semantics. Previously, it triggered when the delay until the next attempt would exceed this value. It now triggers after the given timespan since the first request attempt. - π Fixed a bug when pagination is combined with
max_items
(#710) - π Other minor bug fixes
- The
-
v3.1.0 Changes
January 17, 2020- π Removed the legacy autodiscover implementation.
- π§ Added
QuerySet.depth()
to configure item traversal of querysets. Default isShallow
except for theCommonViews
folder where default isAssociated
. - β‘οΈ Updating credentials on
Account.protocol
after getting anUnauthorizedError
now works.
-
v3.0.0 Changes
January 17, 2020- 0οΈβ£ The new Autodiscover implementation added in 2.2.0 is now default. To switch back to the old
implementation, set the environment variable
EXCHANGELIB_AUTODISCOVER_VERSION=legacy
. - π Removed support for Python 2
- 0οΈβ£ The new Autodiscover implementation added in 2.2.0 is now default. To switch back to the old
implementation, set the environment variable
-
v2.2.0 Changes
January 17, 2020- π Added support for specifying a separate retry policy for the autodiscover service endpoint
selection. Set via the
exchangelib.autodiscover.legacy.INITIAL_RETRY_POLICY
module variable for the the old autodiscover implementation, and via theexchangelib.autodiscover.Autodiscovery.INITIAL_RETRY_POLICY
class variable for the new one. - π Support the authorization code OAuth 2.0 grant type (see issue #698)
- π Removed the
RootOfHierarchy.permission_set
field. It was causing too many failures in the wild. - The full autodiscover response containing all contents of the reponse is now available as
Account.ad_response
. - Added a new Autodiscover implementation that is closer to the specification and easier to debug. To switch
to the new implementation, set the environment variable
EXCHANGELIB_AUTODISCOVER_VERSION=new
. The old one is still the default if the variable is not set, or set toEXCHANGELIB_AUTODISCOVER_VERSION=legacy
. - The
Item.mime_content
field was switched back from a string type to abytes
type. It turns out trying to decode the data was an error (see issue #709).
- π Added support for specifying a separate retry policy for the autodiscover service endpoint
selection. Set via the
-
v2.1.1 Changes
December 05, 2019- π Bugfix release.
-
v2.1.0 Changes
November 07, 2019- π Added support for OAuth 2.0 authentication
- π Fixed a bug in
RelativeMonthlyPattern
andRelativeYearlyPattern
where theweekdays
field was thought to be a list, but is in fact a single value. Renamed the field toweekday
to reflect the change. - π Added support for archiving items to the archive mailbox, if the account has one.
- π Added support for getting delegate information on an Account, as
Account.delegates
. - π Added support for the
ConvertId
service. Available asProtocol.convert_ids()
.