From 0f346094e136ce9764c1486a144db0dcee80e414 Mon Sep 17 00:00:00 2001 From: Erik Cederstrand Date: Wed, 27 Oct 2021 09:35:33 +0200 Subject: [PATCH] Bump version --- CHANGELOG.md | 9 ++++++++- docs/exchangelib/errors.html | 26 ++++++++++++++++++++++++++ docs/exchangelib/ewsdatetime.html | 23 ++++++++++++++--------- docs/exchangelib/folders/roots.html | 2 +- docs/exchangelib/index.html | 16 ++++++++++------ docs/exchangelib/services/common.html | 4 +++- exchangelib/__init__.py | 2 +- 7 files changed, 63 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 134f62d2..29e9a776 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,14 @@ Change Log HEAD ---- -- Support microsecond precision in `EWSDateTime.ewsformat()` + + +4.6.0 +----- +- Support microsecond precision in `EWSDateTime.ewsformat()` +- Remove usage of the `multiprocessing` module to allow running in AWS Lambda +- Support `tzlocal>=4` + 4.5.2 ----- diff --git a/docs/exchangelib/errors.html b/docs/exchangelib/errors.html index 43cfa0aa..83b6f544 100644 --- a/docs/exchangelib/errors.html +++ b/docs/exchangelib/errors.html @@ -237,6 +237,7 @@

Module exchangelib.errors

class ErrorChangeKeyRequiredForWriteOperations(ResponseMessageError): pass class ErrorClientDisconnected(ResponseMessageError): pass class ErrorConnectionFailed(ResponseMessageError): pass +class ErrorConnectionFailedTransientError(ResponseMessageError): pass class ErrorContainsFilterWrongType(ResponseMessageError): pass class ErrorContentConversionFailed(ResponseMessageError): pass class ErrorCorruptData(ResponseMessageError): pass @@ -2146,6 +2147,27 @@

Ancestors

  • builtins.BaseException
  • +
    +class ErrorConnectionFailedTransientError +(value) +
    +
    +

    Global error type within this module.

    +
    + +Expand source code + +
    class ErrorConnectionFailedTransientError(ResponseMessageError): pass
    +
    +

    Ancestors

    + +
    class ErrorContainsFilterWrongType (value) @@ -9080,6 +9102,7 @@

    Subclasses

  • ErrorChangeKeyRequiredForWriteOperations
  • ErrorClientDisconnected
  • ErrorConnectionFailed
  • +
  • ErrorConnectionFailedTransientError
  • ErrorContainsFilterWrongType
  • ErrorContentConversionFailed
  • ErrorCorruptData
  • @@ -9785,6 +9808,9 @@

    ErrorConnectionFailed

  • +

    ErrorConnectionFailedTransientError

    +
  • +
  • ErrorContainsFilterWrongType

  • diff --git a/docs/exchangelib/ewsdatetime.html b/docs/exchangelib/ewsdatetime.html index 9de7472c..0115c703 100644 --- a/docs/exchangelib/ewsdatetime.html +++ b/docs/exchangelib/ewsdatetime.html @@ -120,9 +120,7 @@

    Module exchangelib.ewsdatetime

    if not isinstance(tzinfo, (EWSTimeZone, type(None))): raise ValueError('tzinfo %r must be an EWSTimeZone instance' % tzinfo) if len(args) == 8: - args = list(args) - args[7] = tzinfo - args = tuple(args) + args = args[:7] + (tzinfo,) else: kwargs['tzinfo'] = tzinfo return super().__new__(cls, *args, **kwargs) @@ -135,8 +133,10 @@

    Module exchangelib.ewsdatetime

    if not self.tzinfo: raise ValueError('%r must be timezone-aware' % self) if self.tzinfo.key == 'UTC': + if self.microsecond: + return self.strftime('%Y-%m-%dT%H:%M:%S.%fZ') return self.strftime('%Y-%m-%dT%H:%M:%SZ') - return self.replace(microsecond=0).isoformat() + return self.isoformat() @classmethod def from_datetime(cls, d): @@ -303,6 +303,7 @@

    Module exchangelib.ewsdatetime

    'dateutil': cls.from_dateutil, 'pytz': cls.from_pytz, 'zoneinfo': cls.from_zoneinfo, + 'pytz_deprecation_shim': lambda z: cls.from_zoneinfo(z.unwrap_shim()) }[tz_module](tz) except KeyError: raise TypeError('Unsupported tzinfo type: %r' % tz) @@ -560,9 +561,7 @@

    Methods

    if not isinstance(tzinfo, (EWSTimeZone, type(None))): raise ValueError('tzinfo %r must be an EWSTimeZone instance' % tzinfo) if len(args) == 8: - args = list(args) - args[7] = tzinfo - args = tuple(args) + args = args[:7] + (tzinfo,) else: kwargs['tzinfo'] = tzinfo return super().__new__(cls, *args, **kwargs) @@ -575,8 +574,10 @@

    Methods

    if not self.tzinfo: raise ValueError('%r must be timezone-aware' % self) if self.tzinfo.key == 'UTC': + if self.microsecond: + return self.strftime('%Y-%m-%dT%H:%M:%S.%fZ') return self.strftime('%Y-%m-%dT%H:%M:%SZ') - return self.replace(microsecond=0).isoformat() + return self.isoformat() @classmethod def from_datetime(cls, d): @@ -850,8 +851,10 @@

    Methods

    if not self.tzinfo: raise ValueError('%r must be timezone-aware' % self) if self.tzinfo.key == 'UTC': + if self.microsecond: + return self.strftime('%Y-%m-%dT%H:%M:%S.%fZ') return self.strftime('%Y-%m-%dT%H:%M:%SZ') - return self.replace(microsecond=0).isoformat()
    + return self.isoformat() @@ -941,6 +944,7 @@

    Methods

    'dateutil': cls.from_dateutil, 'pytz': cls.from_pytz, 'zoneinfo': cls.from_zoneinfo, + 'pytz_deprecation_shim': lambda z: cls.from_zoneinfo(z.unwrap_shim()) }[tz_module](tz) except KeyError: raise TypeError('Unsupported tzinfo type: %r' % tz) @@ -1082,6 +1086,7 @@

    Static methods

    'dateutil': cls.from_dateutil, 'pytz': cls.from_pytz, 'zoneinfo': cls.from_zoneinfo, + 'pytz_deprecation_shim': lambda z: cls.from_zoneinfo(z.unwrap_shim()) }[tz_module](tz) except KeyError: raise TypeError('Unsupported tzinfo type: %r' % tz) diff --git a/docs/exchangelib/folders/roots.html b/docs/exchangelib/folders/roots.html index 07da1874..c4d65a7f 100644 --- a/docs/exchangelib/folders/roots.html +++ b/docs/exchangelib/folders/roots.html @@ -27,7 +27,7 @@

    Module exchangelib.folders.roots

    Expand source code
    import logging
    -from multiprocessing import Lock
    +from threading import Lock
     
     from .base import BaseFolder, MISSING_FOLDER_ERRORS
     from .collections import FolderCollection
    diff --git a/docs/exchangelib/index.html b/docs/exchangelib/index.html
    index ef3d005d..78758a9f 100644
    --- a/docs/exchangelib/index.html
    +++ b/docs/exchangelib/index.html
    @@ -46,7 +46,7 @@ 

    Package exchangelib

    from .transport import BASIC, DIGEST, NTLM, GSSAPI, SSPI, OAUTH2, CBA from .version import Build, Version -__version__ = '4.5.2' +__version__ = '4.6.0' __all__ = [ '__version__', @@ -5218,9 +5218,7 @@

    Methods

    if not isinstance(tzinfo, (EWSTimeZone, type(None))): raise ValueError('tzinfo %r must be an EWSTimeZone instance' % tzinfo) if len(args) == 8: - args = list(args) - args[7] = tzinfo - args = tuple(args) + args = args[:7] + (tzinfo,) else: kwargs['tzinfo'] = tzinfo return super().__new__(cls, *args, **kwargs) @@ -5233,8 +5231,10 @@

    Methods

    if not self.tzinfo: raise ValueError('%r must be timezone-aware' % self) if self.tzinfo.key == 'UTC': + if self.microsecond: + return self.strftime('%Y-%m-%dT%H:%M:%S.%fZ') return self.strftime('%Y-%m-%dT%H:%M:%SZ') - return self.replace(microsecond=0).isoformat() + return self.isoformat() @classmethod def from_datetime(cls, d): @@ -5508,8 +5508,10 @@

    Methods

    if not self.tzinfo: raise ValueError('%r must be timezone-aware' % self) if self.tzinfo.key == 'UTC': + if self.microsecond: + return self.strftime('%Y-%m-%dT%H:%M:%S.%fZ') return self.strftime('%Y-%m-%dT%H:%M:%SZ') - return self.replace(microsecond=0).isoformat()
    + return self.isoformat() @@ -5599,6 +5601,7 @@

    Methods

    'dateutil': cls.from_dateutil, 'pytz': cls.from_pytz, 'zoneinfo': cls.from_zoneinfo, + 'pytz_deprecation_shim': lambda z: cls.from_zoneinfo(z.unwrap_shim()) }[tz_module](tz) except KeyError: raise TypeError('Unsupported tzinfo type: %r' % tz) @@ -5740,6 +5743,7 @@

    Static methods

    'dateutil': cls.from_dateutil, 'pytz': cls.from_pytz, 'zoneinfo': cls.from_zoneinfo, + 'pytz_deprecation_shim': lambda z: cls.from_zoneinfo(z.unwrap_shim()) }[tz_module](tz) except KeyError: raise TypeError('Unsupported tzinfo type: %r' % tz) diff --git a/docs/exchangelib/services/common.html b/docs/exchangelib/services/common.html index 2e8a6d4b..45ec4c75 100644 --- a/docs/exchangelib/services/common.html +++ b/docs/exchangelib/services/common.html @@ -45,7 +45,8 @@

    Module exchangelib.services.common

    ErrorNoPublicFolderReplicaAvailable, MalformedResponseError, ErrorExceededConnectionCount, \ SessionPoolMinSizeReached, ErrorIncorrectSchemaVersion, ErrorInvalidRequest, ErrorCorruptData, \ ErrorCannotEmptyFolder, ErrorDeleteDistinguishedFolder, ErrorInvalidSubscription, ErrorInvalidWatermark, \ - ErrorInvalidSyncStateData, ErrorNameResolutionNoResults, ErrorNameResolutionMultipleResults + ErrorInvalidSyncStateData, ErrorNameResolutionNoResults, ErrorNameResolutionMultipleResults, \ + ErrorConnectionFailedTransientError from ..properties import FieldURI, IndexedFieldURI, ExtendedFieldURI, ExceptionFieldURI, ItemId from ..transport import wrap from ..util import chunkify, create_element, add_xml_child, get_xml_attr, to_xml, post_ratelimited, \ @@ -63,6 +64,7 @@

    Module exchangelib.services.common

    ErrorCannotDeleteObject, ErrorCannotEmptyFolder, ErrorConnectionFailed, + ErrorConnectionFailedTransientError, ErrorCreateItemAccessDenied, ErrorDeleteDistinguishedFolder, ErrorExceededConnectionCount, diff --git a/exchangelib/__init__.py b/exchangelib/__init__.py index e10c88ba..c56c0a3e 100644 --- a/exchangelib/__init__.py +++ b/exchangelib/__init__.py @@ -18,7 +18,7 @@ from .transport import BASIC, DIGEST, NTLM, GSSAPI, SSPI, OAUTH2, CBA from .version import Build, Version -__version__ = '4.5.2' +__version__ = '4.6.0' __all__ = [ '__version__',