*******************
General
-------
- **Breaking**: Drop support for Django 4.0 (`1235`_)
- **Breaking**: The long deprecated & removed (from Django) ``(modified|created|accessed)_time`` methods have been
removed from the various storages, please replace with the ``get_(modified|created|accessed)_time`` methods
- Add support for saving ``pathlib.PurePath`` names (`1278`_)
- Add support for Django 4.2 (`1236`_)
Azure
-----
- Set ``account_(name|key)`` from ``connection_string`` if not provided (`1225`_)
Dropbox
-------
- **Deprecated:** The name ``DropboxStorage.location`` has been deprecated, please rename to ``DropboxStorage.root_path``, a future version will
remove support for the old name. (`1251`_)
- Storage and related names with a captialized B have been changed to no longer have one e.g ``DropboxStorage`` has now replaced
``DropBoxStorage``. Aliases have been added so no change is necessary at this time. A future version might deprecate the old names. (`1250`_)
- ``DropboxStorage`` now conforms to the ``BaseStorage`` interface (`1251`_)
- Fix name mangling when saving with certain complex root paths (`1279`_)
FTP
---
- Use setting ``BASE_URL`` if it is defined (`1238`_)
Google Cloud
------------
- **Breaking**: Support for the deprecated ``GS_CACHE_CONTROL`` has been removed. Please set the ``cache_control`` parameter of
``GS_OBJECT_PARAMETERS`` instead. (`1220`_)
Libcloud
--------
- Reading a file that does not exist will now raise ``FileNotFoundError`` (`1191`_)
SFTP
----
- Add closing context manager for standalone usage to ensure connections are cleaned up (`1253`_)
S3
--
- **Deprecated:** ``AWS_S3_USE_THREADS`` has been deprecated in favor of ``AWS_S3_TRANSFER_CONFIG`` (`1280`_)
- **Important:** The namespace of this backend has changed from ``S3Boto3`` to ``S3``. There are no current plans
to deprecate and remove the old namespace but please update if you can. All paths, imports, and classes that previously
referred to ``s3boto`` are now ``s3``. E.g ``S3Boto3Storage`` has been changed to ``S3Storage`` and ``S3Boto3StorageFile``
has been changed to ``S3File``. (`1289`_). Additionally the install extra is now ``s3`` (`1284`_)
- Add setting ``transfer_config/AWS_S3_TRANSFER_CONFIG`` to customize any of the ``TransferConfig`` properties (`1280`_)
- Enable passing ``security_token`` to constructor (`1246`_)
- Do not overwrite a returned ``ContentType`` from ``get_object_parameters`` (`1281`_)
- Add support for setting ``cloudfront_key_id`` and ``cloudfront_key`` via Django 4.2's ``OPTIONS`` (`1274`_)
- Fix ``S3File.closed`` (`1249`_)
- Fix opening new files in write mode with ``S3File`` (`1282`_)
- Fix ``S3File`` not respecting mode on ``readlines`` (`1000`_)
- Fix saving files with string content (`911`_)
- Fix retrieving files with SSE-C enabled (`1286`_)
.. _1280: https://github.com/jschneier/django-storages/pull/1280
.. _1289: https://github.com/jschneier/django-storages/pull/1289
.. _1284: https://github.com/jschneier/django-storages/pull/1284
.. _1274: https://github.com/jschneier/django-storages/pull/1274
.. _1281: https://github.com/jschneier/django-storages/pull/1281
.. _1282: https://github.com/jschneier/django-storages/pull/1282
.. _1279: https://github.com/jschneier/django-storages/pull/1279
.. _1278: https://github.com/jschneier/django-storages/pull/1278
.. _1235: https://github.com/jschneier/django-storages/pull/1235
.. _1236: https://github.com/jschneier/django-storages/pull/1236
.. _1225: https://github.com/jschneier/django-storages/pull/1225
.. _1251: https://github.com/jschneier/django-storages/pull/1251
.. _1250: https://github.com/jschneier/django-storages/pull/1250
.. _1238: https://github.com/jschneier/django-storages/pull/1238
.. _1220: https://github.com/jschneier/django-storages/pull/1220
.. _1191: https://github.com/jschneier/django-storages/pull/1191
.. _1253: https://github.com/jschneier/django-storages/pull/1253
.. _1246: https://github.com/jschneier/django-storages/pull/1246
.. _1249: https://github.com/jschneier/django-storages/pull/1249
.. _1000: https://github.com/jschneier/django-storages/pull/1000
.. _911: https://github.com/jschneier/django-storages/pull/911
.. _1286: https://github.com/jschneier/django-storages/pull/1286