Skip to content

Commit 3fe36cd

Browse files
authored
Modify the way the local TZ is detected (#100)
1 parent 25aa110 commit 3fe36cd

File tree

7 files changed

+639
-537
lines changed

7 files changed

+639
-537
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ repos:
3636
additional_dependencies:
3737
- "types-python-dateutil"
3838
- "types-redis"
39+
- "types-tzlocal"
3940

4041
- repo: https://github.com/python-poetry/poetry
4142
rev: "1.8.0"

TODO.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,8 @@ These below are from Issues or PRs in the original repository.
2222
the test logic not production code.
2323
- catch invalid cache type exceptions and raise a more informative error
2424
message.
25+
- configure the log time display format in the `Cache` class. Make it
26+
totally configurable through an optional parameter and/or detect and use the
27+
preferred local time format.
28+
- catch invalid cache type exceptions and just return a normal response
29+
instead of raising Internal Server (500) error

fastapi_redis_cache/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
Optional,
1313
Union,
1414
)
15-
from zoneinfo import ZoneInfo
15+
16+
import tzlocal
1617

1718
from fastapi_redis_cache.enums import RedisEvent, RedisStatus
1819
from fastapi_redis_cache.key_gen import get_cache_key
@@ -261,5 +262,5 @@ def get_etag(cached_data: Union[str, bytes, dict[str, Any]]) -> str:
261262
@staticmethod
262263
def get_log_time() -> str:
263264
"""Get a timestamp to include with a log message."""
264-
local_tz = ZoneInfo("localtime")
265+
local_tz = tzlocal.get_localzone()
265266
return datetime.now(local_tz).strftime(LOG_TIMESTAMP)

poetry.lock

Lines changed: 574 additions & 488 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ python = "^3.9"
3535
pydantic = "^2.7.1"
3636
redis = "^5.0.4"
3737
fastapi = { extras = ["all"], version = ">=0.110.2,<0.112.0" }
38+
tzlocal = "^5.2"
3839

3940
[tool.poetry.group.dev.dependencies]
4041
# linting etc
@@ -78,6 +79,7 @@ pygments = "^2.17.2"
7879
# needed for mupy typing
7980
types-python-dateutil = "^2.9.0.20240316"
8081
types-redis = "^4.6.0.20240425"
82+
types-tzlocal = "^5.1.0.1"
8183

8284

8385
[build-system]

requirements-dev.txt

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
annotated-types==0.6.0 ; python_version >= "3.9" and python_version < "4.0"
2-
anyio==4.3.0 ; python_version >= "3.9" and python_version < "4.0"
1+
annotated-types==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
2+
anyio==4.4.0 ; python_version >= "3.9" and python_version < "4.0"
33
application-properties==0.8.2 ; python_version >= "3.9" and python_version < "4.0"
44
async-timeout==4.0.3 ; python_version >= "3.9" and python_full_version < "3.11.3"
55
babel==2.15.0 ; python_version >= "3.9" and python_version < "4.0"
6-
certifi==2024.2.2 ; python_version >= "3.9" and python_version < "4.0"
6+
certifi==2024.6.2 ; python_version >= "3.9" and python_version < "4.0"
77
cffi==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
88
cfgv==3.4.0 ; python_version >= "3.9" and python_version < "4.0"
99
charset-normalizer==3.3.2 ; python_version >= "3.9" and python_version < "4.0"
1010
click==8.1.7 ; python_version >= "3.9" and python_version < "4.0"
1111
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0"
1212
columnar==1.4.1 ; python_version >= "3.9" and python_version < "4.0"
13-
coverage[toml]==7.4.4 ; python_version >= "3.9" and python_version < "4.0"
14-
cryptography==42.0.5 ; python_version >= "3.9" and python_version < "4.0"
13+
coverage[toml]==7.5.3 ; python_version >= "3.9" and python_version < "4.0"
14+
cryptography==42.0.8 ; python_version >= "3.9" and python_version < "4.0"
1515
csscompressor==0.9.5 ; python_version >= "3.9" and python_version < "4.0"
1616
deprecated==1.2.14 ; python_version >= "3.9" and python_version < "4.0"
1717
distlib==0.3.8 ; python_version >= "3.9" and python_version < "4.0"
1818
dnspython==2.6.1 ; python_version >= "3.9" and python_version < "4.0"
19-
email-validator==2.1.1 ; python_version >= "3.9" and python_version < "4.0"
20-
exceptiongroup==1.2.0 ; python_version >= "3.9" and python_version < "3.11"
21-
faker==25.8.0 ; python_version >= "3.9" and python_version < "4.0"
19+
email-validator==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
20+
exceptiongroup==1.2.1 ; python_version >= "3.9" and python_version < "3.11"
21+
faker==25.9.1 ; python_version >= "3.9" and python_version < "4.0"
2222
fakeredis==2.23.2 ; python_version >= "3.9" and python_version < "4.0"
2323
fastapi-cli==0.0.4 ; python_version >= "3.9" and python_version < "4.0"
2424
fastapi[all]==0.111.0 ; python_version >= "3.9" and python_version < "4.0"
25-
filelock==3.13.1 ; python_version >= "3.9" and python_version < "4.0"
25+
filelock==3.15.3 ; python_version >= "3.9" and python_version < "4.0"
2626
ghp-import==2.1.0 ; python_version >= "3.9" and python_version < "4.0"
2727
gitdb==4.0.11 ; python_version >= "3.9" and python_version < "4.0"
28-
github-changelog-md==0.9.3 ; python_version >= "3.9" and python_version < "4.0"
28+
github-changelog-md==0.9.4 ; python_version >= "3.9" and python_version < "4.0"
2929
gitpython==3.1.43 ; python_version >= "3.9" and python_version < "4.0"
3030
h11==0.14.0 ; python_version >= "3.9" and python_version < "4.0"
3131
htmlmin2==0.1.13 ; python_version >= "3.9" and python_version < "4.0"
32-
httpcore==1.0.4 ; python_version >= "3.9" and python_version < "4.0"
32+
httpcore==1.0.5 ; python_version >= "3.9" and python_version < "4.0"
3333
httptools==0.6.1 ; python_version >= "3.9" and python_version < "4.0"
3434
httpx==0.27.0 ; python_version >= "3.9" and python_version < "4.0"
35-
identify==2.5.35 ; python_version >= "3.9" and python_version < "4.0"
35+
identify==2.5.36 ; python_version >= "3.9" and python_version < "4.0"
3636
idna==3.7 ; python_version >= "3.9" and python_version < "4.0"
37-
importlib-metadata==7.0.2 ; python_version >= "3.9" and python_version < "3.10"
37+
importlib-metadata==7.2.0 ; python_version >= "3.9" and python_version < "3.10"
3838
iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "4.0"
39-
itsdangerous==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
39+
itsdangerous==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
4040
jinja2==3.1.4 ; python_version >= "3.9" and python_version < "4.0"
4141
jsmin==3.0.1 ; python_version >= "3.9" and python_version < "4.0"
4242
markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "4.0"
@@ -56,23 +56,23 @@ mkdocstrings==0.25.1 ; python_version >= "3.9" and python_version < "4.0"
5656
mock==5.1.0 ; python_version >= "3.9" and python_version < "4.0"
5757
mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "4.0"
5858
mypy==1.10.0 ; python_version >= "3.9" and python_version < "4.0"
59-
nodeenv==1.8.0 ; python_version >= "3.9" and python_version < "4.0"
60-
orjson==3.9.15 ; python_version >= "3.9" and python_version < "4.0"
61-
packaging==24.0 ; python_version >= "3.9" and python_version < "4.0"
59+
nodeenv==1.9.1 ; python_version >= "3.9" and python_version < "4.0"
60+
orjson==3.10.5 ; python_version >= "3.9" and python_version < "4.0"
61+
packaging==24.1 ; python_version >= "3.9" and python_version < "4.0"
6262
paginate==0.5.6 ; python_version >= "3.9" and python_version < "4.0"
6363
pastel==0.2.1 ; python_version >= "3.9" and python_version < "4.0"
6464
pathspec==0.12.1 ; python_version >= "3.9" and python_version < "4.0"
65-
platformdirs==4.2.0 ; python_version >= "3.9" and python_version < "4.0"
65+
platformdirs==4.2.2 ; python_version >= "3.9" and python_version < "4.0"
6666
pluggy==1.5.0 ; python_version >= "3.9" and python_version < "4.0"
6767
poethepoet==0.26.1 ; python_version >= "3.9" and python_version < "4.0"
6868
pre-commit==3.7.1 ; python_version >= "3.9" and python_version < "4.0"
69-
pycparser==2.21 ; python_version >= "3.9" and python_version < "4.0"
69+
pycparser==2.22 ; python_version >= "3.9" and python_version < "4.0"
7070
pydantic-core==2.18.4 ; python_version >= "3.9" and python_version < "4.0"
71-
pydantic-extra-types==2.6.0 ; python_version >= "3.9" and python_version < "4.0"
72-
pydantic-settings==2.2.1 ; python_version >= "3.9" and python_version < "4.0"
71+
pydantic-extra-types==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
72+
pydantic-settings==2.3.3 ; python_version >= "3.9" and python_version < "4.0"
7373
pydantic==2.7.4 ; python_version >= "3.9" and python_version < "4.0"
7474
pyfakefs==5.5.0 ; python_version >= "3.9" and python_version < "4.0"
75-
pygithub==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
75+
pygithub==2.3.0 ; python_version >= "3.9" and python_version < "4.0"
7676
pygments==2.18.0 ; python_version >= "3.9" and python_version < "4.0"
7777
pyjwt[crypto]==2.8.0 ; python_version >= "3.9" and python_version < "4.0"
7878
pymarkdownlnt==0.9.20 ; python_version >= "3.9" and python_version < "4.0"
@@ -98,9 +98,8 @@ redis==5.0.6 ; python_version >= "3.9" and python_version < "4.0"
9898
regex==2024.5.15 ; python_version >= "3.9" and python_version < "4.0"
9999
requests==2.32.3 ; python_version >= "3.9" and python_version < "4.0"
100100
rich==13.7.1 ; python_version >= "3.9" and python_version < "4.0"
101-
rtoml==0.9.0 ; python_version >= "3.9" and python_version < "4.0"
102-
ruff==0.4.9 ; python_version >= "3.9" and python_version < "4.0"
103-
setuptools==69.2.0 ; python_version >= "3.9" and python_version < "4.0"
101+
rtoml==0.10.0 ; python_version >= "3.9" and python_version < "4.0"
102+
ruff==0.4.10 ; python_version >= "3.9" and python_version < "4.0"
104103
shellingham==1.5.4 ; python_version >= "3.9" and python_version < "4.0"
105104
simple-toml-settings==0.6.1 ; python_version >= "3.9" and python_version < "4.0"
106105
six==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
@@ -112,18 +111,24 @@ termcolor==2.4.0 ; python_version >= "3.9" and python_version < "4.0"
112111
tomli==2.0.1 ; python_version >= "3.9" and python_version < "4.0"
113112
toolz==0.12.1 ; python_version >= "3.9" and python_version < "4.0"
114113
typer==0.12.3 ; python_version >= "3.9" and python_version < "4.0"
115-
types-pyopenssl==24.0.0.20240311 ; python_version >= "3.9" and python_version < "4.0"
114+
types-cffi==1.16.0.20240331 ; python_version >= "3.9" and python_version < "4.0"
115+
types-pyopenssl==24.1.0.20240425 ; python_version >= "3.9" and python_version < "4.0"
116116
types-python-dateutil==2.9.0.20240316 ; python_version >= "3.9" and python_version < "4.0"
117+
types-pytz==2024.1.0.20240417 ; python_version >= "3.9" and python_version < "4.0"
117118
types-redis==4.6.0.20240425 ; python_version >= "3.9" and python_version < "4.0"
118-
typing-extensions==4.10.0 ; python_version >= "3.9" and python_version < "4.0"
119-
ujson==5.9.0 ; python_version >= "3.9" and python_version < "4.0"
119+
types-setuptools==70.0.0.20240524 ; python_version >= "3.9" and python_version < "4.0"
120+
types-tzlocal==5.1.0.1 ; python_version >= "3.9" and python_version < "4.0"
121+
typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "4.0"
122+
tzdata==2024.1 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Windows"
123+
tzlocal==5.2 ; python_version >= "3.9" and python_version < "4.0"
124+
ujson==5.10.0 ; python_version >= "3.9" and python_version < "4.0"
120125
urllib3==2.2.2 ; python_version >= "3.9" and python_version < "4.0"
121-
uvicorn[standard]==0.28.0 ; python_version >= "3.9" and python_version < "4.0"
126+
uvicorn[standard]==0.30.1 ; python_version >= "3.9" and python_version < "4.0"
122127
uvloop==0.19.0 ; (sys_platform != "win32" and sys_platform != "cygwin") and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "4.0"
123-
virtualenv==20.25.1 ; python_version >= "3.9" and python_version < "4.0"
124-
watchdog==4.0.0 ; python_version >= "3.9" and python_version < "4.0"
125-
watchfiles==0.21.0 ; python_version >= "3.9" and python_version < "4.0"
128+
virtualenv==20.26.2 ; python_version >= "3.9" and python_version < "4.0"
129+
watchdog==4.0.1 ; python_version >= "3.9" and python_version < "4.0"
130+
watchfiles==0.22.0 ; python_version >= "3.9" and python_version < "4.0"
126131
wcwidth==0.2.13 ; python_version >= "3.9" and python_version < "4.0"
127132
websockets==12.0 ; python_version >= "3.9" and python_version < "4.0"
128133
wrapt==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
129-
zipp==3.18.1 ; python_version >= "3.9" and python_version < "3.10"
134+
zipp==3.19.2 ; python_version >= "3.9" and python_version < "3.10"

requirements.txt

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
annotated-types==0.6.0 ; python_version >= "3.9" and python_version < "4.0"
2-
anyio==4.3.0 ; python_version >= "3.9" and python_version < "4.0"
1+
annotated-types==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
2+
anyio==4.4.0 ; python_version >= "3.9" and python_version < "4.0"
33
async-timeout==4.0.3 ; python_version >= "3.9" and python_full_version < "3.11.3"
4-
certifi==2024.2.2 ; python_version >= "3.9" and python_version < "4.0"
4+
certifi==2024.6.2 ; python_version >= "3.9" and python_version < "4.0"
55
click==8.1.7 ; python_version >= "3.9" and python_version < "4.0"
66
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows")
77
dnspython==2.6.1 ; python_version >= "3.9" and python_version < "4.0"
8-
email-validator==2.1.1 ; python_version >= "3.9" and python_version < "4.0"
9-
exceptiongroup==1.2.0 ; python_version >= "3.9" and python_version < "3.11"
8+
email-validator==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
9+
exceptiongroup==1.2.1 ; python_version >= "3.9" and python_version < "3.11"
1010
fastapi-cli==0.0.4 ; python_version >= "3.9" and python_version < "4.0"
1111
fastapi[all]==0.111.0 ; python_version >= "3.9" and python_version < "4.0"
1212
h11==0.14.0 ; python_version >= "3.9" and python_version < "4.0"
13-
httpcore==1.0.4 ; python_version >= "3.9" and python_version < "4.0"
13+
httpcore==1.0.5 ; python_version >= "3.9" and python_version < "4.0"
1414
httptools==0.6.1 ; python_version >= "3.9" and python_version < "4.0"
1515
httpx==0.27.0 ; python_version >= "3.9" and python_version < "4.0"
1616
idna==3.7 ; python_version >= "3.9" and python_version < "4.0"
17-
itsdangerous==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
17+
itsdangerous==2.2.0 ; python_version >= "3.9" and python_version < "4.0"
1818
jinja2==3.1.4 ; python_version >= "3.9" and python_version < "4.0"
1919
markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "4.0"
2020
markupsafe==2.1.5 ; python_version >= "3.9" and python_version < "4.0"
2121
mdurl==0.1.2 ; python_version >= "3.9" and python_version < "4.0"
22-
orjson==3.9.15 ; python_version >= "3.9" and python_version < "4.0"
22+
orjson==3.10.5 ; python_version >= "3.9" and python_version < "4.0"
2323
pydantic-core==2.18.4 ; python_version >= "3.9" and python_version < "4.0"
24-
pydantic-extra-types==2.6.0 ; python_version >= "3.9" and python_version < "4.0"
25-
pydantic-settings==2.2.1 ; python_version >= "3.9" and python_version < "4.0"
24+
pydantic-extra-types==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
25+
pydantic-settings==2.3.3 ; python_version >= "3.9" and python_version < "4.0"
2626
pydantic==2.7.4 ; python_version >= "3.9" and python_version < "4.0"
2727
pygments==2.18.0 ; python_version >= "3.9" and python_version < "4.0"
2828
python-dotenv==1.0.1 ; python_version >= "3.9" and python_version < "4.0"
@@ -34,9 +34,11 @@ shellingham==1.5.4 ; python_version >= "3.9" and python_version < "4.0"
3434
sniffio==1.3.1 ; python_version >= "3.9" and python_version < "4.0"
3535
starlette==0.37.2 ; python_version >= "3.9" and python_version < "4.0"
3636
typer==0.12.3 ; python_version >= "3.9" and python_version < "4.0"
37-
typing-extensions==4.10.0 ; python_version >= "3.9" and python_version < "4.0"
38-
ujson==5.9.0 ; python_version >= "3.9" and python_version < "4.0"
39-
uvicorn[standard]==0.28.0 ; python_version >= "3.9" and python_version < "4.0"
37+
typing-extensions==4.12.2 ; python_version >= "3.9" and python_version < "4.0"
38+
tzdata==2024.1 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Windows"
39+
tzlocal==5.2 ; python_version >= "3.9" and python_version < "4.0"
40+
ujson==5.10.0 ; python_version >= "3.9" and python_version < "4.0"
41+
uvicorn[standard]==0.30.1 ; python_version >= "3.9" and python_version < "4.0"
4042
uvloop==0.19.0 ; (sys_platform != "win32" and sys_platform != "cygwin") and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "4.0"
41-
watchfiles==0.21.0 ; python_version >= "3.9" and python_version < "4.0"
43+
watchfiles==0.22.0 ; python_version >= "3.9" and python_version < "4.0"
4244
websockets==12.0 ; python_version >= "3.9" and python_version < "4.0"

0 commit comments

Comments
 (0)