Skip to main content

A plugin for flake8 which enforces importing `datetime as dt` and `time as tm`.

Project description

flake8-datetime-import

PyPI version PyPI - Python Version PyPI - Wheel codecov pre-commit.ci status

flake8-datetime-import is an opinionated plugin which aims to reduce confusing or inconsistent usage of Python's datetime module. It checks that datetime and time are imported as modules and aliased like:

import datetime as dt
import time as tm

Installation

pip install flake8-datetime-import

flake8 codes

Code Description
DTI100 from datetime import ... is not allowed. datetime must be imported as a module.
DTI101 datetime imported without aliasing as dt. Expected import datetime as dt.
DTI200 from time import ... is not allowed. time must be imported as a module.
DTI201 time imported without aliasing as tm. Expected import time as tm.

Rationale

datetime and time are confusing when encountered in code. Are they modules? Are they classes or functions?

# Bad
import datetime
from datetime import datetime, time, timezone

import time
from time import time, timezone

Consistently importing and aliasing the datetime and time modules helps prevent this ambiguity.

# Good
import datetime as dt
import time as tm

dt.datetime.now()
tm.time()

Importing and namespacing datetime prevents other naming collisions, such as Django's django.utils.timezone:

import datetime as dt

from django.utils import timezone

dt.timezone.utc
timezone.now()

This plugin was inspired by:

  • A talk by @brandon-rhodes at PyCon Canada in which he mentioned this importing strategy
  • Code review fatigue

Other notable mentions of this importing strategy:

pre-commit

To use with pre-commit, add flake8-datetime-import as an additional dependency to flake8.

# .pre-commit-config.yml

-   repo: https://github.com/pycqa/flake8
    rev: 7.3.0
    hooks:
    -   id: flake8
        additional_dependencies: [
          flake8-datetime-import,
        ]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flake8_datetime_import-1.0.0.tar.gz (33.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flake8_datetime_import-1.0.0-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file flake8_datetime_import-1.0.0.tar.gz.

File metadata

  • Download URL: flake8_datetime_import-1.0.0.tar.gz
  • Upload date:
  • Size: 33.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for flake8_datetime_import-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7aeca9d4829cf9c8725b1fbfd95255e6468f977b07124b6ec8c04c4b8fa7b04b
MD5 791d90380dfb565a109cce1ab695f629
BLAKE2b-256 af2fc00a4cb787b50622936446b9b64fd927ee0fb9e6c92686b4b1d355f0a67c

See more details on using hashes here.

Provenance

The following attestation bundles were made for flake8_datetime_import-1.0.0.tar.gz:

Publisher: publish.yml on marcgibbons/flake8-datetime-import

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flake8_datetime_import-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_datetime_import-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2847ebfcc2567bde7e9b8fce9ed91e6bb2fbba571382a5efde949df69ad70483
MD5 45cd0f53bb270e283f994c25dde77be3
BLAKE2b-256 47bbd0fc0c8d76f173c7e63ca5928a23d0520aaa39affe0b1fc91084451f3ba1

See more details on using hashes here.

Provenance

The following attestation bundles were made for flake8_datetime_import-1.0.0-py3-none-any.whl:

Publisher: publish.yml on marcgibbons/flake8-datetime-import

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page