Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 1.3.0 instead.

check-empty

A simple, dependency-free and intuitive pre-commit / prek hook, CLI, library, uv tool and GitHub Action conglomerate written in Python that makes sure selected files, even within directories, are empty according to as little filesystem stat calls as possible and clears them effectively with minimal I/O if specified. Supports CPython 3.6+, PyPy 7.0+, GraalPy 19.0+ out-of-the-box, and most likely every Python 3.6 runtime you can think of.

Quickstart

Without installation (just trying out the capabilities):

uvx check-empty -Q src/mylib/py.typed docs/.nojekyll static/.gitkeep some_directory
# uv
uv tool install check-empty # bare executable on PATH
uv pip install check-empty # if you want to import check_empty for programmatic usage

pip install check-empty # pip

Show the version with:

check-empty --version # or check-empty -v

All the snippets below should do the same thing.

Run the CLI:

check-empty -Q src/mylib/py.typed docs/.nojekyll static/.gitkeep some_directory

In Python:

from check_empty import check

check(
    ['src/mylib/py.typed', 'docs/.nojekyll', 'static/.gitkeep', 'some_directory'],
    verbosity=1,  # default 2; each -Q decreases it by 1 and each -V increases it by 1
)

As a pre-commit hook:

# .pre-commit-config.yaml
repos:
- repo: https://github.com/jonathandung/check-empty
  rev: v0.9.1 # repository version
  hooks:
    - id: check-empty # the hook
      args: # example list of arguments
        - -Q # flag to decrease output, applicable twice (shorthand for --quiet)
      files: # below: paths to files/directories to clear or keep empty, relative to
        # project root (absolute paths are possible but not recommended)
        - src/mylib/py.typed
        - docs/.nojekyll
        - static/.gitkeep
        - some_directory

equivalent in prek.toml format:

[[repos]]
repo = "https://github.com/jonathandung/check-empty"
rev = "v0.9.1"

[[repos.hooks]]
id = "check-empty"
args = ["-Q"]
files = ["src/mylib/py.typed", "docs/.nojekyll", "static/.gitkeep", "some_directory"]

or (TOML 1.1+):

[[repos]]
repo = "https://github.com/jonathandung/check-empty"
rev = "v0.9.1"
hooks = [{
  id = "check-empty",
  args = ["-Q"]
  files = ["src/mylib/py.typed", "docs/.nojekyll", "static/.gitkeep", "some_directory"]
}]

As a GitHub action step:

steps:
- uses: jonathandung/check-empty@v0.9.1 # the latest version on the GitHub Actions
  # marketplace; this step will fail and subsequent jobs will not run if any file is
  # not empty
  with:
    python-version: '3.14' # run the script on the latest stable Python version
    # Python down to 3.6 is supported but not recommended due to end-of-life
    quiet: true
    filenames: |
      src/mylib/py.typed
      docs/.nojekyll
      static/.gitkeep
      some_directory

Notes

  1. If your file name starts with a hyphen, to avoid having it misinterpreted as a flag, use a command of the form check-empty -- -this_is_actually_a_file.txt. Thus, for a file literally named "--", you have little choice but to call the underlying library function (check) directly.
  2. Forward slashes can be used even on Windows, so there is no need to escape anything.
  3. Glob patterns are supported on *nix only. If on Windows, use a shell like Git Bash.
  4. The program does not recurse into archives, since identification of compressed archives would require reading the first few bytes of each file seen, which is error-prone and inefficient.

Development

If you wish to contribute to this project, you are more than welcome, but please remember to read the contributing guide. Tests are run with:

python -m test_check_empty # explicit
python -m unittest discover # alternative

at the project root.

Download files

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

Source Distribution

check_empty-0.9.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

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

check_empty-0.9.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file check_empty-0.9.1.tar.gz.

File metadata

  • Download URL: check_empty-0.9.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for check_empty-0.9.1.tar.gz
Algorithm Hash digest
SHA256 22026c2916fe50641aafa58cbf7b9f4fd50eac7bec87d41849f8cf80bc23bdee
MD5 b97267483e0d0c64fd9b1e8520a6d945
BLAKE2b-256 9518e51952f24b75c14dee05064addcc03861ff30d04f3219de2624f4d18d6b6

See more details on using hashes here.

File details

Details for the file check_empty-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: check_empty-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for check_empty-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 575c5cd0eedc1148c40104beb28ea5b36e9b56540c3f06c17e6009a36d1e2251
MD5 43789304ba35a8b867a4d28a8fb46fa7
BLAKE2b-256 74606d7a633e3dbfff4c99ffa6f765e4365458f2e51f72020a2fc6e6e21ab04b

See more details on using hashes here.

Release history Release notifications | RSS feed

1.3.0

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

This release

0.9.1 This release

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page