Skip to content

Prepare v0.1.0 release - #3

Merged
abhiksark merged 1 commit into
mainfrom
feature/product-maturity
May 25, 2026
Merged

abhiksark merged 1 commit into
mainfrom
feature/product-maturity

Conversation

@abhiksark

Copy link
Copy Markdown
Owner

Summary

  • Package Pylings as the python-learnings distribution while keeping the pylings CLI.
  • Add self-contained workspace init/update, reference solutions, dry-run/solution commands, and release workflows.
  • Add release checklist, governance docs, and CI/package smoke coverage.

Test Plan

  • python -m pytest -q -> 125 passed in 29.60s
  • pylings --root tests/fixtures/passing_curriculum verify -> passed
  • python -m build -> built python_learnings-0.1.0.tar.gz and python_learnings-0.1.0-py3-none-any.whl
  • python -m pip install --force-reinstall dist/python_learnings-0.1.0-py3-none-any.whl -> installed python-learnings 0.1.0
  • Installed CLI smoke: pylings --version, init, list, solution variables1, reset variables1 --yes -> passed
  • git diff --check -> clean

Release Notes

  • PyPI pending publisher should use project name python-learnings, owner abhiksark, repository pylings, workflow publish.yml, environment blank.
  • Local and remote tag v0.1.0 currently points at this release commit.

@coderabbitai

coderabbitai Bot commented May 25, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1d110558-a143-44ba-95e4-174d72f2a453

📥 Commits

Reviewing files that changed from the base of the PR and between d3390c3 and b02c963.

📒 Files selected for processing (300)
  • .github/ISSUE_TEMPLATE/bug_report.md
  • .github/ISSUE_TEMPLATE/feature_request.md
  • .github/pull_request_template.md
  • .github/workflows/ci.yml
  • .github/workflows/publish.yml
  • AGENTS.md
  • CHANGELOG.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • RELEASE.md
  • Readme.md
  • SECURITY.md
  • docs/superpowers/plans/2026-05-25-pylings-product-maturity.md
  • pylings/app.py
  • pylings/cli.py
  • pylings/core/curriculum.py
  • pylings/core/exercise.py
  • pylings/core/manifest.py
  • pylings/core/reset.py
  • pylings/core/runner.py
  • pylings/core/solutions.py
  • pylings/core/watcher.py
  • pyproject.toml
  • solutions/.keep
  • solutions/_answers.py
  • solutions/async1.py
  • solutions/async10.py
  • solutions/async2.py
  • solutions/async3.py
  • solutions/async4.py
  • solutions/async5.py
  • solutions/async6.py
  • solutions/async7.py
  • solutions/async8.py
  • solutions/async9.py
  • solutions/classes1.py
  • solutions/classes10.py
  • solutions/classes11.py
  • solutions/classes12.py
  • solutions/classes2.py
  • solutions/classes3.py
  • solutions/classes4.py
  • solutions/classes5.py
  • solutions/classes6.py
  • solutions/classes7.py
  • solutions/classes8.py
  • solutions/classes9.py
  • solutions/collections1.py
  • solutions/collections10.py
  • solutions/collections2.py
  • solutions/collections3.py
  • solutions/collections4.py
  • solutions/collections5.py
  • solutions/collections6.py
  • solutions/collections7.py
  • solutions/collections8.py
  • solutions/collections9.py
  • solutions/comprehensions1.py
  • solutions/comprehensions10.py
  • solutions/comprehensions2.py
  • solutions/comprehensions3.py
  • solutions/comprehensions4.py
  • solutions/comprehensions5.py
  • solutions/comprehensions6.py
  • solutions/comprehensions7.py
  • solutions/comprehensions8.py
  • solutions/comprehensions9.py
  • solutions/conditionals1.py
  • solutions/conditionals10.py
  • solutions/conditionals2.py
  • solutions/conditionals3.py
  • solutions/conditionals4.py
  • solutions/conditionals5.py
  • solutions/conditionals6.py
  • solutions/conditionals7.py
  • solutions/conditionals8.py
  • solutions/conditionals9.py
  • solutions/context_managers1.py
  • solutions/context_managers2.py
  • solutions/context_managers3.py
  • solutions/context_managers4.py
  • solutions/context_managers5.py
  • solutions/context_managers6.py
  • solutions/context_managers7.py
  • solutions/context_managers8.py
  • solutions/dataclasses1.py
  • solutions/dataclasses2.py
  • solutions/dataclasses3.py
  • solutions/dataclasses4.py
  • solutions/dataclasses5.py
  • solutions/dataclasses6.py
  • solutions/dataclasses7.py
  • solutions/dataclasses8.py
  • solutions/datetime1.py
  • solutions/datetime2.py
  • solutions/datetime3.py
  • solutions/datetime4.py
  • solutions/datetime5.py
  • solutions/datetime6.py
  • solutions/datetime7.py
  • solutions/datetime8.py
  • solutions/decorators1.py
  • solutions/decorators10.py
  • solutions/decorators2.py
  • solutions/decorators3.py
  • solutions/decorators4.py
  • solutions/decorators5.py
  • solutions/decorators6.py
  • solutions/decorators7.py
  • solutions/decorators8.py
  • solutions/decorators9.py
  • solutions/dictionaries1.py
  • solutions/dictionaries10.py
  • solutions/dictionaries2.py
  • solutions/dictionaries3.py
  • solutions/dictionaries4.py
  • solutions/dictionaries5.py
  • solutions/dictionaries6.py
  • solutions/dictionaries7.py
  • solutions/dictionaries8.py
  • solutions/dictionaries9.py
  • solutions/enums1.py
  • solutions/enums2.py
  • solutions/enums3.py
  • solutions/enums4.py
  • solutions/enums5.py
  • solutions/enums6.py
  • solutions/exceptions1.py
  • solutions/exceptions10.py
  • solutions/exceptions2.py
  • solutions/exceptions3.py
  • solutions/exceptions4.py
  • solutions/exceptions5.py
  • solutions/exceptions6.py
  • solutions/exceptions7.py
  • solutions/exceptions8.py
  • solutions/exceptions9.py
  • solutions/file_io1.py
  • solutions/file_io10.py
  • solutions/file_io2.py
  • solutions/file_io3.py
  • solutions/file_io4.py
  • solutions/file_io5.py
  • solutions/file_io6.py
  • solutions/file_io7.py
  • solutions/file_io8.py
  • solutions/file_io9.py
  • solutions/functional1.py
  • solutions/functional10.py
  • solutions/functional2.py
  • solutions/functional3.py
  • solutions/functional4.py
  • solutions/functional5.py
  • solutions/functional6.py
  • solutions/functional7.py
  • solutions/functional8.py
  • solutions/functional9.py
  • solutions/functions1.py
  • solutions/functions10.py
  • solutions/functions2.py
  • solutions/functions3.py
  • solutions/functions4.py
  • solutions/functions5.py
  • solutions/functions6.py
  • solutions/functions7.py
  • solutions/functions8.py
  • solutions/functions9.py
  • solutions/generators1.py
  • solutions/generators10.py
  • solutions/generators2.py
  • solutions/generators3.py
  • solutions/generators4.py
  • solutions/generators5.py
  • solutions/generators6.py
  • solutions/generators7.py
  • solutions/generators8.py
  • solutions/generators9.py
  • solutions/itertools1.py
  • solutions/itertools2.py
  • solutions/itertools3.py
  • solutions/itertools4.py
  • solutions/itertools5.py
  • solutions/itertools6.py
  • solutions/itertools7.py
  • solutions/itertools8.py
  • solutions/json1.py
  • solutions/json2.py
  • solutions/json3.py
  • solutions/json4.py
  • solutions/json5.py
  • solutions/json6.py
  • solutions/json7.py
  • solutions/json8.py
  • solutions/lists1.py
  • solutions/lists10.py
  • solutions/lists2.py
  • solutions/lists3.py
  • solutions/lists4.py
  • solutions/lists5.py
  • solutions/lists6.py
  • solutions/lists7.py
  • solutions/lists8.py
  • solutions/lists9.py
  • solutions/loops1.py
  • solutions/loops10.py
  • solutions/loops2.py
  • solutions/loops3.py
  • solutions/loops4.py
  • solutions/loops5.py
  • solutions/loops6.py
  • solutions/loops7.py
  • solutions/loops8.py
  • solutions/loops9.py
  • solutions/modules1.py
  • solutions/modules2.py
  • solutions/modules3.py
  • solutions/modules4.py
  • solutions/modules5.py
  • solutions/modules6.py
  • solutions/modules7.py
  • solutions/modules8.py
  • solutions/oop_advanced1.py
  • solutions/oop_advanced10.py
  • solutions/oop_advanced11.py
  • solutions/oop_advanced12.py
  • solutions/oop_advanced2.py
  • solutions/oop_advanced3.py
  • solutions/oop_advanced4.py
  • solutions/oop_advanced5.py
  • solutions/oop_advanced6.py
  • solutions/oop_advanced7.py
  • solutions/oop_advanced8.py
  • solutions/oop_advanced9.py
  • solutions/pathlib1.py
  • solutions/pathlib2.py
  • solutions/pathlib3.py
  • solutions/pathlib4.py
  • solutions/pathlib5.py
  • solutions/pathlib6.py
  • solutions/recursion1.py
  • solutions/recursion2.py
  • solutions/recursion3.py
  • solutions/recursion4.py
  • solutions/recursion5.py
  • solutions/recursion6.py
  • solutions/recursion7.py
  • solutions/recursion8.py
  • solutions/regex1.py
  • solutions/regex10.py
  • solutions/regex2.py
  • solutions/regex3.py
  • solutions/regex4.py
  • solutions/regex5.py
  • solutions/regex6.py
  • solutions/regex7.py
  • solutions/regex8.py
  • solutions/regex9.py
  • solutions/sets1.py
  • solutions/sets10.py
  • solutions/sets2.py
  • solutions/sets3.py
  • solutions/sets4.py
  • solutions/sets5.py
  • solutions/sets6.py
  • solutions/sets7.py
  • solutions/sets8.py
  • solutions/sets9.py
  • solutions/strings1.py
  • solutions/strings10.py
  • solutions/strings2.py
  • solutions/strings3.py
  • solutions/strings4.py
  • solutions/strings5.py
  • solutions/strings6.py
  • solutions/strings7.py
  • solutions/strings8.py
  • solutions/strings9.py
  • solutions/testing1.py
  • solutions/testing10.py
  • solutions/testing11.py
  • solutions/testing12.py
  • solutions/testing2.py
  • solutions/testing3.py
  • solutions/testing4.py
  • solutions/testing5.py
  • solutions/testing6.py
  • solutions/testing7.py
  • solutions/testing8.py
  • solutions/testing9.py
  • solutions/tuples1.py
  • solutions/tuples10.py
  • solutions/tuples2.py
  • solutions/tuples3.py
  • solutions/tuples4.py
  • solutions/tuples5.py
  • solutions/tuples6.py
  • solutions/tuples7.py
  • solutions/tuples8.py
  • solutions/tuples9.py
  • solutions/type_hints1.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/product-maturity

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@abhiksark
abhiksark merged commit b02c963 into main May 25, 2026
4 checks passed
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.

1 participant