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: 5.0.4
    hooks:
    -   id: flake8
        additional_dependencies: [
          flake8-datetime-import==0.1.0,
        ]

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-0.1.0a3.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

flake8_datetime_import-0.1.0a3-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file flake8-datetime-import-0.1.0a3.tar.gz.

File metadata

File hashes

Hashes for flake8-datetime-import-0.1.0a3.tar.gz
Algorithm Hash digest
SHA256 d31b719412bdee2d44919801c18ecf31d13eaaf8607b39b5a60a77fa88980531
MD5 b4cc16c115534db15778dd543b46c8c0
BLAKE2b-256 f70a405d73c187e2b18f2aa1ee5f76e132b6ded345c1ea6b028f9acf00c0dbb1

See more details on using hashes here.

File details

Details for the file flake8_datetime_import-0.1.0a3-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_datetime_import-0.1.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 16a92227b3e054a4f6b447150a86d54770422ff3c0019c3fe5c69c459bc4170e
MD5 8beabca57fa248d52f56abd2005d6d08
BLAKE2b-256 2b28831c96d7d9f816c923047bdd164f4dedef2106fcdfa0ef49cbfd70e75efb

See more details on using hashes here.

Supported by

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