Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: EMRahman/python-pitfalls
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: analysis/dependency-risk
Choose a base ref
...
head repository: EMRahman/python-pitfalls
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 4 commits
  • 26 files changed
  • 2 contributors

Commits on Oct 30, 2026

  1. Merge pull request #3 from EMRahman/analysis/dependency-risk

    Show how hidden complexity becomes real-world bugs: security pitfalls, vulnerability data and charts
    EMRahman authored Oct 30, 2026
    Configuration menu
    Copy the full SHA
    7078615 View commit details
    Browse the repository at this point in the history

Commits on Oct 31, 2026

  1. Add 14 leaky-abstraction pitfalls (#60–#73), 100% example coverage, a…

    …nd linter guardrails
    
    - New pitfalls & verified examples (#60–#73):
      - Fundamentals (README.md): #60 all([]) vacuous truth, #61 itertools.groupby
        unsorted runs & shared cursor, #62 chained comparisons with in/is/==,
        #63 match/case bare-name capture.
      - Concurrency (docs/concurrency.md): #64 async for early-break cleanup leaks
        (contextlib.aclosing), #65 asyncio.gather() orphaned sibling tasks,
        #66 subprocess.Popen.wait() pipe buffer deadlocks, #67 GIL dict compound-op
        & free-threaded assumptions.
      - Object model (docs/object-model.md): #68 built-in dict/list C fast-path
        method bypasses, #69 __slots__ lost in subclasses, #70 __len__ falsiness.
      - Interpreter (docs/interpreter.md): #71 deferred/stringified annotations vs
        runtime introspection.
      - Data systems (docs/data-systems.md): #72 urllib.parse.urljoin path/origin
        pitfalls, #73 Unicode normalization & .casefold() vs .lower().
    - Improvements to existing entries & repo tooling:
      - Add benign stdlib runnable examples for #58 and #59 (73/73 coverage).
      - Highlight isinstance(True, int) JSON validation trap in #14.
      - Add set/dict un-findable NaN key growth to #44.
      - Link #53 safe_join TOCTOU discussion to filelock advisories & clarify
        CWE-22 counts in docs/security.md.
      - Add copy-paste Ruff/type-checker/runtime guardrail section to README.md.
      - Add free-threaded CPython 3.13t and 3.14t to .github/workflows/verify.yml.
    Ehsan Rahman Ehsan Rahman
    Ehsan Rahman authored and Ehsan Rahman committed Oct 31, 2026
    Configuration menu
    Copy the full SHA
    a7fdd9a View commit details
    Browse the repository at this point in the history

Commits on Nov 2, 2026

  1. Address review: resolve annotation strings and synchronize asyncio ex…

    …ample
    Ehsan Rahman Ehsan Rahman
    Ehsan Rahman authored and Ehsan Rahman committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    8a0f9aa View commit details
    Browse the repository at this point in the history
  2. Merge pull request #5 from EMRahman/docs/leaky-abstractions-and-guard…

    …rails
    
    Add 14 leaky-abstraction pitfalls (#60–#73), 100% example coverage, and linter guardrails
    EMRahman authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    03a0fbf View commit details
    Browse the repository at this point in the history
Loading