DocumentProperties.created and modified are set at import time of the openpyxl module, rather than actual created time
Thank you for openpyxl, it is very useful!
### Description
We're creating documents and were surprised to find that the `created` and `modified` attributes of `openpyxl.packaging.core.DocumentProperties` are set to the time that the module is imported, rather than when an individual `DocumentProperties` instance is created.
### Reproducer
```python
from datetime import datetime
import time
before_import = datetime.utcnow()
import openpyxl
after_import_ = datetime.utcnow()
first_props__ = openpyxl.packaging.core.DocumentProperties().created
time.sleep(1.234)
second_props_ = openpyxl.packaging.core.DocumentProperties().created
print(
f"""\
{before_import = }
{after_import_ = }
{first_props__ = }
{second_props_ = }
{openpyxl.__version__ = }"""
)
```
Output:
```
before_import = datetime.datetime(2022, 8, 31, 22, 23, 12, 614431)
after_import_ = datetime.datetime(2022, 8, 31, 22, 23, 12, 798539)
first_props__ = datetime.datetime(2022, 8, 31, 22, 23, 12, 793817)
second_props_ = datetime.datetime(2022, 8, 31, 22, 23, 12, 793817)
openpyxl.__version__ = '3.0.10'
```
Note that both `props` timestamps are exactly equal, and occur between the before/after import timestamps.
### Proposed patch
One possibility to address would be a change to https://foss.heptapod.net/openpyxl/openpyxl/-/blob/59b7c3773df9eea6839fb7ee756ea7c5e3b29ee5/openpyxl/packaging/core.py#L89-94 like the following, to move the default arg logic (which is evaluated during parsing/on import) to be within the constructor:
```diff
revision=None,
version=None,
- created=datetime.datetime.utcnow(),
+ created=None,
creator="openpyxl",
description=None,
identifier=None,
language=None,
- modified=datetime.datetime.utcnow(),
+ modified=None,
subject=None,
title=None,
):
+ if created is None:
+ created = datetime.datetime.utcnow()
+ if modified is None:
+ modified = datetime.datetime.utcnow()
self.contentStatus = contentStatus
self.lastPrinted = lastPrinted
```
That said, it looks like the behaviour was changed from timestamps-at-creation to timestamps-at-import in https://foss.heptapod.net/openpyxl/openpyxl/-/commit/66c7f18a5ab21a9a4733fe4e9ebc04dea1d4acd4 and thus this may be intended behaviour?
### Work-around
We've been able to work-around this by explicitly setting `wb.properties.created = wb.properties.modified = datetime.utcnow()` in our code.
---
As I said above, thank you for openpyxl!
issue