# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= python-django-timezone-field VERSION= 6.1.0 KEYWORDS= python VARIANTS= v11 v12 SDESC[v11]= Django app that provides timezone info (3.11) SDESC[v12]= Django app that provides timezone info (3.12) HOMEPAGE= https://github.com/mfogel/django-timezone-field/ CONTACT= Python_Automaton[python@ironwolf.systems] DOWNLOAD_GROUPS= main SITES[main]= PYPIWHL/0a/a0/010458d5314492b06e29d55ac1ae0409a9e7f69ef2d690a60b2aa4787577 DISTFILE[1]= django_timezone_field-6.1.0-py3-none-any.whl:main DF_INDEX= 1 SPKGS[v11]= single SPKGS[v12]= single OPTIONS_AVAILABLE= PY311 PY312 OPTIONS_STANDARD= none VOPTS[v11]= PY311=ON PY312=OFF VOPTS[v12]= PY311=OFF PY312=ON DISTNAME= django_timezone_field-6.1.0.dist-info GENERATED= yes [PY311].RUN_DEPENDS_ON= python-Django:single:v11 [PY311].USES_ON= python:v11,wheel [PY312].RUN_DEPENDS_ON= python-Django:single:v12 [PY312].USES_ON= python:v12,wheel [FILE:3442:descriptions/desc.single] # django-timezone-field [CI] [codecov] [pypi downloads] [pypi python support] [pypi django support] A Django app providing DB, form, and REST framework fields for [`zoneinfo`] and [`pytz`] timezone objects. ## The transition from `pytz` to `zoneinfo` Like Django, this app supports both `pytz` and `zoneinfo` objects while the community transitions away from `pytz` to `zoneinfo`. All exposed fields and functions that return a timezone object accept an optional boolean kwarg `use_pytz`. If not explicitly specified, the default value used for `use_pytz` matches Django's behavior: - Django <= 3.X: `use_pytz` defaults to `True` - Django == 4.X: `use_pytz` defaults to the value of [`django.conf.settings.USE_DEPRECATED_PYTZ`], which itself defaults to `False` - Django >= 5.X: django plans to [drop support for `pytz` altogether], and this app will likely do the same. Note that this app does _not_ declare `pytz` to be a dependency, so if you're using this app with `use_pytz=True`, you'll need to ensure `pytz` is included in the environment yourself. ### Differences in recognized timezones between `pytz` and `zoneinfo` `pytz` and `zoneinfo` search for timezone data differently. - `pytz` bundles and searches within its own copy of the [IANA timezone DB] - `zoneinfo` first searches the local system's timezone DB for a match. If no match is found, it then searches within the [`tzdata`] package _if it is installed_. The `tzdata` package contains a copy of the IANA timezone DB. If the local system's timezone DB doesn't cover the entire IANA timezone DB and the `tzdata` package is not installed, you may run across errors like `ZoneInfoNotFoundError: 'No time zone found with key Pacific/Kanton'` for seemingly valid timezones when transitioning from `pytz` to `zoneinfo`. The easy fix is to add `tzdata` to your project with `poetry add tzdata` or `pip install tzdata`. Assuming you have the `tzdata` package installed if needed, no [data migration] should be necessary when switching from `pytz` to `zoneinfo`. ## Examples ### Database Field ```python import zoneinfo import pytz from django.db import models from timezone_field import TimeZoneField class MyModel(models.Model): tz1 = TimeZoneField(default="Asia/Dubai") # defaults supported, in ModelForm renders like "Asia/Dubai" tz2 = TimeZoneField(choices_display="WITH_GMT_OFFSET") # in ModelForm renders like "GMT+04:00 Asia/Dubai" tz3 = TimeZoneField(use_pytz=True) # returns pytz timezone objects tz4 = TimeZoneField(use_pytz=False) # returns zoneinfo objects my_model = MyModel( tz2="America/Vancouver", # assignment of a string tz3=pytz.timezone("America/Vancouver"), # assignment of a pytz timezone tz4=zoneinfo.ZoneInfo("America/Vancouver"), # assignment of a zoneinfo ) my_model.full_clean() # validates against pytz.common_timezones by default my_model.save() # values stored in DB as strings my_model.tz3 # value returned as pytz timezone: my_model.tz4 # value returned as zoneinfo: zoneinfo.ZoneInfo(key='America/Vancouver') ``` ### Form Field ```python from django import forms from timezone_field import TimeZoneFormField class MyForm(forms.Form): tz1 = TimeZoneFormField() # renders like "Asia/Dubai" [FILE:123:distinfo] 0095f43da716552fcc606783cfb42cb025892514f1ec660ebfa96186eb83b74c 12036 django_timezone_field-6.1.0-py3-none-any.whl