Upgrade to Python 3.11#39
Draft
olmos-keepsafe wants to merge 8 commits into
Draft
Conversation
Modified Makefile test targets to use shared pynose coverage flags and CI XML/xunit artifact output. Added migration contract details for the python311-service-upgrade-stack guardrail audit, no-stack deviations, dependency upgrade rationale, intentionally retained pins, and refreshed proof results. Removed no files in this follow-up; it only documents and verifies the branch against the shared skill.
Bump remaining content-validator runtime pins to latest proven-safe versions: parse 1.22.0 and sdiff 1.0.0. Adapt CircleCI from the python311-service-upgrade-stack sample with prepare_cache, lint, test, cache fallback keys, artifacts, and Codecov fallback. Align Makefile CI install targets and refresh the migration contract with latest-version, msgpack not-applicable, CircleCI, and proof evidence.
Split restore_cache and save_cache option anchors so each CircleCI step receives only supported keys.
Pin aiohttp to the required 3.13.2 release and update beautifulsoup4, lxml, parse, and coverage to the approved current versions. Keep requirements artifacts aligned and record the July compatibility proof in the migration contract.
Replace the legacy YAML-anchor layout with reusable CircleCI 2.1 executors and commands. Preserve the prepare, lint, test, cache, xUnit, coverage artifact, and non-fatal Codecov flow while using schema-correct restore and save cache steps. Record CLI validation and processed-config proof in the migration contract.
Drop the completed migration tool from the maintained development dependency set and requirements mirror. Remove its repo-local migration-contract references now that the Python 3.11 source modernization has been applied and verified.
Install committed development requirements from public sources before the editable package install, avoiding unreachable internal pypicloud probes in CircleCI. Add the shared KeepSafe SSH key fingerprint, refresh caches when development requirements change, and document project-side key provisioning.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Key changes
setup.py/setup.cfgtopyproject.toml, sets Python policy to 3.11, and bumps the package version to1.0.0.aiohttp==3.13.2,beautifulsoup4==4.15.0,lxml==6.1.1,Markdown==3.10.2,parse==1.22.1, andsdiff@1.0.0;coverageis refreshed to7.15.2.msgpackis not acontent-validatordependency or source/test concern, so libks msgpack compatibility wrappers are not applicable here.nosewithpynose, moves Flake8 config intopyproject.toml, and keeps sample-stylePYNOSE_SHARED_FLAGSplus CI coverage/xUnit artifact flags.content-validatorCLI help/version smoke surface because package metadata already declared the console script.executorsandcommands, withprepare_cache,lint, andtestjobs on Python3.11.13, schema-correct restore/save cache steps, fallback cache keys, test/coverage artifacts, and non-fatal Codecov upload.email-service: load the shared KeepSafe SSH key fingerprint, install committed development requirements from public sources without probing internalpypicloud, then install the package editable without resolving dependencies again. Cache keys includerequirements-dev.txt.Proof run
python3.11 --version: Python 3.11.13CI=1 make ci-dev-install: pass using public PyPI and the public tagged GitHub dependency, with no internalpypicloudprobemake lint: passmake test: pass, 65 tests, 1 skipped, coverage total 84%CI=1 make test: pass, 65 tests, 1 skipped; writesbuild/coverage/coverage.xmlandbuild/test/results.xmlCI=1 make test-only: pass for the exact CircleCI test-job commandvenv/bin/python -m compileall validator tests: passvalidator,validator.checks.url,aiohttp==3.13.2,beautifulsoup4==4.15.0,lxml==6.1.1,Markdown==3.10.2,parse==1.22.1, andsdiff==1.0.0: passvenv/bin/content-validator --helpandvenv/bin/content-validator --version: passvenv/bin/pip check: passcircleci config validate .circleci/config.yml: passcircleci config process .circleci/config.yml: pass with CircleCI API access; reusable 2.1 config expands into the expected three jobs2e8a64f:prepare_cache,lint, andtestall passed, confirming the shared SSH key and public-index install pathgit diff --check: passKnown gaps
sdiffdependency.content-validator==1.0.0.python311-service-upgrade-stacktasks remain intentionally skipped because this repo has no Paste/Gunicorn/INI/healthcheck/worker/Docker runtime surface.Linear
BE-94: Upgrade content-validator to Python 3.11
Fixes BE-94