Skip to main content

Text file copyright notice linter and updater.

Project description

copyright2

License GitHub Actions Workflow Status

copyright2 (copyright-right) is a text file copyright notice lint and update tool to help keep the years listed in your copyright notices up to date with when they were modified.

Features

  • Supports any text file.
  • Configurable to match your specific copyright notice format.
  • Configurable to include/exclude specific files/directories.
  • Check mode which shows changes missing from files.
  • Fix mode which updates files with missing changes.
  • Intelligently simplifies copyright year expressions e.g. 2009,2010,2011,2013 to 2009-11,3.
  • Git path mode for using Git to identify which files to check in CI.
  • Configurable to quickly add current year to modified files when using Git path mode.

Getting Started

Prerequisites

  • Python 3.9 or later

Installation

Install from source using your favourite package manager

pip install git+https://github.com/phyrwork/copyright2.git

Usage

Configuration

Create a .copyrightrc.yaml at the top level of your project and describe your copyright notice and specify some files to manage using regular expressions.

By default, no files or directories are included and no changes are made to included files.

# .copyrightrc.yaml
root: yes
copyright: "Copyright \(c\) {ts}"
include_dirs:
  - .*  # All directories.
include_files:
  - README.md$
simplify: yes  # Simplify copyright year expression.

Options specified in .copyrightrc.yaml of subdirectories take precedence for that directory.

# src/.copyrightrc.yaml
include_files:
  - .*\.py$  # All .py files in this directory and below.
# src/ext/.copyrightrc.yaml
include_files:
  - .*\.(c|h)$  # Only .c, .h files in this directory and below.

Run (development)

Check files that will be managed by copyright

examples/readme$ copyright list
README.md
src/readme.py
src/ext/readme.h
src/ext/readme.c
4

then scan for changes that need to be made to any copyright notices

examples/readme$ copyright check
README.md: notice not found
src/ext/readme.h: 2: simplified timestamp expression
2

and fix them

examples/readme$ copyright fix
README.md: notice not found
fixing src/readme.py... ok
fixing src/ext/readme.h... ok
2

examples/readme$ git diff
diff --git a/examples/readme/src/readme.py b/examples/readme/src/readme.py
index 65785b6..cb2603b 100644
--- a/examples/readme/src/readme.py
+++ b/examples/readme/src/readme.py
@@ -1 +1 @@
-"""Copyright (c) 2023,2024,2025."""
+"""Copyright (c) 2023-5."""

Run (CI)

The check command will only return 0 if no required changes are detected.

To restrict the check to only files which have changed between the previous and current commit

examples/readme$ copyright list --find-path git HEAD~1
src/readme.py
1

To ensure that the current year has been added to files which have changed between the previous and current commit, add the --add-now flag

examples/readme$ copyright check --find-path git HEAD~1 --add-now
src/readme.py: 1: added year 2024 to timestamp
1

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

copyright2-0.1.0.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

copyright2-0.1.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file copyright2-0.1.0.tar.gz.

File metadata

  • Download URL: copyright2-0.1.0.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/6.5.0-1025-azure

File hashes

Hashes for copyright2-0.1.0.tar.gz
Algorithm Hash digest
SHA256 20fd568706cac51a3e9e56d49abf07647629947fa6cc7e14e88b81cc55fcbde6
MD5 3618c6820a1713450eac71c55a81dc9b
BLAKE2b-256 1e9c3fb0418c482bc2ccc270ea834d917654a4146a18c1fc6ead478ec649b71d

See more details on using hashes here.

File details

Details for the file copyright2-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: copyright2-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/6.5.0-1025-azure

File hashes

Hashes for copyright2-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 068b3046f9e550caecfe252ec8a494fd36af5f466799bbc7b627ad0e1ed55c71
MD5 066bd25a856c976be5af6bf7c2944a0d
BLAKE2b-256 242fbc7048b036076793a8b1fbe16b0b4f2dd54d7c789542bdeda2e9eae000dc

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