in src/es_pii_tool/helpers/utils.py [0:0]
def now_iso8601() -> str:
"""
:returns: An ISO8601 timestamp based on datetime.now
"""
# Because Python 3.12 now requires non-naive timezone declarations, we must change.
#
# ## Example:
# ## The new way:
# ## datetime.now(timezone.utc).isoformat()
# ## Result: 2024-04-16T16:00:00+00:00
# ## End Example
#
# Note that the +00:00 is appended now where we affirmatively declare the UTC
# timezone
#
# As a result, we will use this function to prune away the timezone if it is +00:00
# and replace it with Z, which is shorter Zulu notation for UTC (per Elasticsearch)
#
# We are MANUALLY, FORCEFULLY declaring timezone.utc, so it should ALWAYS be +00:00,
# but could in theory sometime show up as a Z, so we test for that.
parts = datetime.now(timezone.utc).isoformat().split('+')
if len(parts) == 1:
if parts[0][-1] == 'Z':
return parts[0] # Our ISO8601 already ends with a Z for Zulu/UTC time
return f'{parts[0]}Z' # It doesn't end with a Z so we put one there
if parts[1] == '00:00':
return f'{parts[0]}Z' # It doesn't end with a Z so we put one there
return f'{parts[0]}+{parts[1]}' # Fallback publishes the +TZ, whatever that was