Skip to content

Update Python Software Foundation Copyright Year.#4

Closed
orsenthil wants to merge 4 commits intopython:masterfrom
orsenthil:update_copyright
Closed

Update Python Software Foundation Copyright Year.#4
orsenthil wants to merge 4 commits intopython:masterfrom
orsenthil:update_copyright

Conversation

@orsenthil
Copy link
Copy Markdown
Member

Make it current.

I searched for \d+ Python Software Foundation. and selectively updated where it made sense.

Comment thread Lib/_pydecimal.py Outdated
@@ -1,4 +1,4 @@
# Copyright (c) 2004 Python Software Foundation.
# Copyright (c) 2017 Python Software Foundation.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps on these where the source was a single year, it should convert to 2004-2017

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usually Copyright (c) <year> means <year>-present, IMHO this should stay 2004. and 2017 -> Present.

This avoid churn on file and to keep them updated.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe change this PR to strip the date range from the first one and leave the other alone? @VanL can you weigh in?

Copy link
Copy Markdown
Contributor

@willingc willingc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might wish to look at the conversion from a single date.

@gpshead
Copy link
Copy Markdown
Member

gpshead commented Feb 10, 2017

I strongly recommend NOT doing this.

I believe this has come up before, do not edit the date or otherwise turn it into a sequence or range of dates in a copyright notice in existing files. Leave the date in the file as it was originally written. It is meaningless churn at best.

@Carreau
Copy link
Copy Markdown
Contributor

Carreau commented Feb 10, 2017

http://www.copyrightlaws.com/copyright-basics/copyright-notice-year/ :

The general rule is that the year to include in a copyright notice is the year of first publication of the work

the notice may include a range of years (e.g., 2009-2013), starting from the date of the oldest published elements and ending with the date of the newest published elements.

Emphasis mine. Also the last year should be changed only if the content of the file have changed, so I would also favor the 1 year entry only.

@orsenthil
Copy link
Copy Markdown
Member Author

@gpshead - you mean no to the entire change? I know this has come up earlier.

How about removing the copyright line from the modules headers altogether (when appropriate) ? It is mentioned in the README.

  • For ranges which are wrong like 2001-2007 Python Software Foundation. There is no controversy, we should either remove it or update it.

  • For range copyright start year. As others have pointed out, leaving it start year seems like a good idea.

@orsenthil orsenthil requested a review from VanL February 10, 2017 23:46
@zware
Copy link
Copy Markdown
Member

zware commented Feb 11, 2017

@benjaminp, you have historically done the copyright update, what criteria have you used?

@warsaw
Copy link
Copy Markdown
Member

warsaw commented Feb 11, 2017

Here's what I use to bump my copyright years. Feel free to beg, borrow, or steal.

https://gitlab.com/mailman/mailman/blob/master/copybump.py

@benjaminp
Copy link
Copy Markdown
Contributor

I generally update the ones that cover "all of Python" like the LICENSE and getcopyright.c. My preference would be removing all PSF copyright headers from internal files and rely on the repository-level ones. (Ones for contributed-and-licensed code should just be left alone.)

@malemburg
Copy link
Copy Markdown
Member

Please don't remove the copyright notices from the files. The origin of the code and copyright status is already hard to determine given Python's history. Removing the notices would make this even harder.

Copy link
Copy Markdown
Member

@malemburg malemburg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change in Mac/BuildScript/resources/License.rtf is wrong (you removed 2016). Please also verify other license documents you may have touched.

@benjaminp
Copy link
Copy Markdown
Contributor

benjaminp commented Feb 12, 2017 via email

@orsenthil
Copy link
Copy Markdown
Member Author

Acknowledge. I was suggesting we remove only the PSF Copyright lines in the internal source modules. The author ones will remain in tact.

@malemburg
Copy link
Copy Markdown
Member

Just like with all copyright notices, removals of PSF copyright notices is something only the PSF board can decide.

IMO, it would be better to find a short PSF notice text (e.g. one without year, so that we don't have to touch the files once every year) and add it to all files which currently do not have it, just like GNU projects do. It makes tracking copyrights much easier.

@benjaminp
Copy link
Copy Markdown
Contributor

Just like with all copyright notices, removals of PSF copyright notices is something only the PSF board can decide.

We should ask them then.

IMO, it would be better to find a short PSF notice text (e.g. one without year, so that we don't have to touch the files once every year) and add it to all files which currently do not have it, just like GNU projects do. It makes tracking copyrights much easier.

Not having copyright headers distributed around the entire sounds easiest to me. It's also not clear to me that adding a copyright header to every cpython source file would be correct, since contributing to Python does not require copyright assignment.

@malemburg
Copy link
Copy Markdown
Member

malemburg commented Feb 13, 2017 via email

@nedbat
Copy link
Copy Markdown
Member

nedbat commented Feb 13, 2017

For the main README file: the long list of years is in the file twice. Surely we don't need to state it twice. Let's get rid of the one at the top of the file, which is just clutter preventing people from reading the file.

@orsenthil
Copy link
Copy Markdown
Member Author

I have addressed the review comments.

  • Aim is to be non-controversial.

jaraco pushed a commit that referenced this pull request Dec 2, 2022
nanjekyejoannah added a commit to nanjekyejoannah/cpython that referenced this pull request Jan 11, 2023
5: Add 2.x related warnings r=ltratt a=nanjekyejoannah

I have broken away the warning bit from the [flag](python#3 ) and the [port ](python#4 )PR. Well, the way function calls are done between C and Python is confusing, nothing scary anyway, review maybe a bit annoying.

Review this PR before python#4 

Co-authored-by: Joannah Nanjekye <jnanjekye@python.org>
nanjekyejoannah added a commit to nanjekyejoannah/cpython that referenced this pull request Jan 11, 2023
7: Port cmp with no extra slot r=ltratt a=nanjekyejoannah

Due to segfaults introducing a new `tp_compare` slot proved problematic. I have found a way of supporting `cmp` without a new slot. Tests are updated to match the new functionality where Py2.x doesn't fail.

I wanted to force push on [this branch] (https://github.com/softdevteam/pygrate3) but maybe you wanted to compare before I force push.

This replaces python#4 



Co-authored-by: Joannah Nanjekye <jnanjekye@python.org>
barneygale added a commit to barneygale/cpython that referenced this pull request Oct 29, 2024
SonicField added a commit to SonicField/cpython that referenced this pull request Apr 22, 2026
Pushes 36, 37, 38 all gated against the stale python_gate from
push 33 (8382896), not their respective HEAD binaries.

Root cause: 'cp "$PYTHON" "${PYTHON}_gate" 2>/dev/null || true'.
When a prior gate left python_gate held open (or otherwise busy),
cp failed with 'Text file busy', stderr was discarded, '|| true'
swallowed the exit code, and PYTHON pointed to the leftover stale
copy. Subsequent test runs reported 981 PASS — against a binary
from 3 commits ago.

Fix: rm -f the destination first, then cp without || true. If cp
fails for any reason, set -e aborts the gate. No more silent
fallback to a stale binary.

Discovery: testkeeper investigated SIGSEGV during G1.6 LIR-capture
prep on the actual HEAD binary (carrying generalist's in-flight
LOAD_ATTR_SLOT stash). The crash didn't reproduce on python_gate
because python_gate was 3 commits old and predated the SLOT work.
The version-string mismatch ('79890e7b73-dirty' vs '8382896c85')
made the stale-binary substitution visible.

Also adds catch python#4 to docs/wiring_catches.md per supervisor
2026-04-22 00:42:38Z directive.
SonicField added a commit to SonicField/cpython that referenced this pull request Apr 22, 2026
…ation)

Push 39's e808676 + 0a5f096 added BINARY_MATCH on both arches.
The grep is bare-hash: 'grep "$COMMIT_HASH" "$LONG_VERSION"'. That
matches both clean ':<hash>,' AND '-dirty:<hash>' suffix — the
exact contamination class that bit catch python#4 (binary built from a
dirty working tree masquerades as a clean build).

Pre-push-39, 'cp || true' accidentally protected against this by
falling back to a stale-clean python_gate when local build was
dirty. Push 39 removed the fallback. Without -dirty rejection,
the next contaminated build IS the binary the gate tests, while
BINARY_MATCH still passes.

Fix: tighten the check to reject any version string containing
'-dirty'. Mirror on ARM64 path (mirrors 0a5f096 symmetry).
Output now distinguishes BINARY_MISMATCH (wrong hash) from
BINARY_DIRTY (right hash, dirty build).

Adds catches python#5 (push-39 in-flight commit race) and python#6 (this
fix) to docs/wiring_catches.md.

Per supervisor 2026-04-22 01:08:18Z + theologian 01:08:00Z
(defense-in-depth: when a single incident exposes N adjacent
gaps, fixing 1 leaves N-1 unprotected).
SonicField added a commit to SonicField/cpython that referenced this pull request Apr 22, 2026
Per supervisor 2026-04-22 03:06:55Z + theologian 03:07:12Z + pythia python#58:
push 44 introduces the W3 R4 oracle dispatcher in compiler.cpp behind
#ifdef RC_ORACLE. The push-44 nm production-binary check is one-shot —
need a STANDING gate assertion so future compiler.cpp edits cannot
silently leak RC_ORACLE dispatch into production.

Failure mode caught:
  Any future commit that drops, inverts, or accidentally hard-defines
  the #ifdef RC_ORACLE guard would leak the C++ rc_oracle dispatch path
  (linked from libphoenix_rc_oracle.a) into the production python
  binary. Without this assertion, the leak is invisible until the next
  manual nm audit. Same silent-failure class as the cp-||-true loophole
  (catch python#4, push 38) — accepted bad state silently.

Implementation (5 LOC after BINARY_MATCH (clean) ✓):
  RC_ORACLE_LEAK=$(nm $PYTHON | grep -c 'rc_oracle')
  if [ $RC_ORACLE_LEAK -ne 0 ]; then
      echo BINARY_RC_ORACLE_LEAK_DETECTED ...
      exit 1
  fi
  echo BINARY_RC_ORACLE_OK: production binary clean (0 rc_oracle symbols)

Verbatim wording per gatekeeper item python#15 (03:07:25Z):
  - PASS: 'BINARY_RC_ORACLE_OK: production binary clean (0 rc_oracle symbols)'
  - FAIL: 'BINARY_RC_ORACLE_LEAK_DETECTED' + FATAL + exit 1
  - Mirrors BINARY_DIRTY discipline (catch silent failure structurally)

Verification (compile-clean pre-commit):
  bash -n scripts/gate_phoenix.sh: SYNTAX OK
  Inserted at line 120 (immediately after BINARY_MATCH block at line 119).

Bundled into push 44 (rather than standalone push 45) because the
dispatcher lands in this push — the leak-check guards it from day 1
instead of leaving a one-push window where item python#15 isn't enforced.

Push 44 batch grows 3 → 4 commits:
  THIS COMMIT  — gate item python#15 (RC_ORACLE leak assertion)
  63568c0   — W3 Step 5 expansion (4 injection classes + invariant python#7)
  4f591a1   — W3 Step 5 v1 (rc_oracle_self_test.sh)
  a99db92   — W3 Steps 1-4 (scratch lib + dispatcher)

ABBA cap usage: 17 → 18 (4 commits this push).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.