Sync with upstream#1
Open
ddfourtwo wants to merge 406 commits into
Open
Conversation
* Bump uv from 0.7.13 to 0.7.19 Bumps [uv](https://github.com/astral-sh/uv) from 0.7.13 to 0.7.19. - [Release notes](https://github.com/astral-sh/uv/releases) - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md) - [Commits](astral-sh/uv@0.7.13...0.7.19) --- updated-dependencies: - dependency-name: uv dependency-version: 0.7.19 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Update test fixture assertion * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
* Bump uv from 0.7.19 to 0.7.20 Bumps [uv](https://github.com/astral-sh/uv) from 0.7.19 to 0.7.20. - [Release notes](https://github.com/astral-sh/uv/releases) - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md) - [Commits](astral-sh/uv@0.7.19...0.7.20) --- updated-dependencies: - dependency-name: uv dependency-version: 0.7.20 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Builds will now error if either: - The Python buildpack has been run multiple times in the same build. - An existing `.heroku/python/` directory is found in the app source for any other reason (e.g. accidentally committed to Git) This upgrades the warnings added in #1724 in December 2024 to errors. No feedback/concerns were raised in the GitHub issue linked from the warning: #1704 And Honeycomb data shows: - the number of apps hitting the warnings was minimal - in most cases, the builds hitting the warnings were failing already (eg due to broken `python/` directories having been committed to Git, and so turning the warning into an error will actually give them a better error message than before). Closes #1704. GUS-W-17309720.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
These are not set/used since #1830.
For historical reasons, the buildpack has supported using the package manager Pipenv without a lockfile. However, doing so results in non-deterministic installs (package versions can vary across environments) and so is unsafe / not recommended. As such, since #1695 in November 2024, we've shown a deprecation warning if apps have only a `Pipfile` and no `Pipfile.lock` file. Plenty of time has now passed, and metrics show usage very few apps hitting this warning. In addition, upstream Pipenv has also deprecated support for `--skip-lock`: pypa/pipenv@8775d59 As such, it's time to change this warning to an error. Affected apps will need to run `pipenv lock` and commit the resultant `Pipfile.lock` to Git. Closes #1702. GUS-W-17308738.
Several improvements were made to uv's package manager related tests when adding support for uv. This ports those improvements to the tests for the other package managers too. A couple of the new tests have to be marked as skipped, due to bugs that they exposed upstream in Poetry and Pipenv. GUS-W-18319828. GUS-W-18319833.
After #1830, the two `checks::warn_if_*` functions now error rather than warn, so the function names have been renamed so they don't mislead about their behaviour.
Misc test improvements noticed while working on the Pipenv refactor + version update. GUS-W-17482289.
Bumps the ruby-dependencies group with 2 updates: [heroku_hatchet](https://github.com/heroku/hatchet) and [rubocop](https://github.com/rubocop/rubocop). Updates `heroku_hatchet` from 8.0.5 to 8.0.6 - [Changelog](https://github.com/heroku/hatchet/blob/main/CHANGELOG.md) - [Commits](heroku/hatchet@v8.0.5...v8.0.6) Updates `rubocop` from 1.77.0 to 1.78.0 - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop@v1.77.0...v1.78.0) --- updated-dependencies: - dependency-name: heroku_hatchet dependency-version: 8.0.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: ruby-dependencies - dependency-name: rubocop dependency-version: 1.78.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: ruby-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Since more than 60 days have passed since the replacement metric (`python_version_origin`) was added in #1785, so all build events within the Honeycomb retention time span now have the new metric name. GUS-W-19116066.
* Updates Pipenv from 2024.0.1 to 2025.0.4. Changelog: https://github.com/pypa/pipenv/blob/main/CHANGELOG.md#202504-2025-07-07 * Switches to installing Pipenv into its own virtual environment, so that it and its dependencies don't leak into the app environment. * Stops installing pip (in addition to Pipenv) when the chosen package manager is Pipenv, to match the behaviour when using Poetry or uv. * Forces the build cache to be cleared if the contents of `Pipfile.lock` has changed since the last build. This is required to work around `pipenv {install,sync}` by design not uninstalling packages if they are removed from the lockfile (?!). We also can't use `pipenv clean` since it doesn't work with `--system` / `PIPENV_SYSTEM`. Apps that have been inadvertently depending on Pipenv's own dependencies implicitly, will need to add those dependencies explicitly to their `Pipfile` and regenerate `Pipfile.lock`. Similarly, any apps that for some reason use pip later in the build in addition to Pipenv, will need to either add pip as an explicit dependency in their `Pipfile`, or else for adhoc use-cases (such as in one-off dynos), can temporarily install pip using `python -m ensurepip --default-pip`. Supersedes #1828. GUS-W-17482289. GUS-W-17482412. GUS-W-19116903.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
After moving Pipenv to its own virtual environment in #1840 (to fix leaking Pipenv's dependencies into the app environment), apps that explicitly depend on a package that happen to also be a Pipenv dependency were seeing `ModuleNotFoundError` failures. For example: ``` ModuleNotFoundError: No module named 'certifi' ``` Or: ``` ModuleNotFoundError: No module named 'packaging' ``` It appears that Pipenv's `--system` feature has a bug whereby it sees its own dependencies (installed in its own environment) as already installed (even though they aren't actually installed in the app environment), so incorrectly skips installing them. In general, it seems Pipenv's support for `--system` is pretty buggy (for example, it doesn't work with `pipenv run` either): https://github.com/pypa/pipenv/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22--system%20flag%22 The classic Python buildpack doesn't currently use virtual environments (since it installs a dedicated Python install for the app, that's already separate from system Python), and switching to them would be a significant change that may cause other types of breakage (for example, to apps that hardcode the path to Python). As such for now, we need to continue to use `pipenv install --system` (as the buildpack has done for some time), but I have found the bug can be worked around if we set `VIRTUAL_ENV` to the Python install location, to trick Pipenv into thinking it's operating in a virtual environment. The Pipenv tests have been updated to confirm that an explicit `certifi` install now works. GUS-W-19118553.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
To distinguish it from the installation dependencies step, particularly since copying files into the cache directory can take a while for apps with a large number of dependencies. GUS-W-19144883.
By moving the Python directory instead of copying, which internally performs a rename instead of a copy if the cache directory is on the same filesystem mount as the build directory (which is the case for standard builds). This should be particularly beneficial for apps with a large number of Python dependencies (and so a large site-packages) - where we see cache restoration taking up to 30 seconds in Honeycomb (P99.9). GUS-W-19144883.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
* Bump uv from 0.7.20 to 0.8.4 Bumps [uv](https://github.com/astral-sh/uv) from 0.7.20 to 0.8.4. - [Release notes](https://github.com/astral-sh/uv/releases) - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md) - [Commits](astral-sh/uv@0.7.20...0.8.4) --- updated-dependencies: - dependency-name: uv dependency-version: 0.8.4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Update test fixture for new output * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
) Bumps the ruby-dependencies group with 1 update: [rubocop](https://github.com/rubocop/rubocop). Updates `rubocop` from 1.78.0 to 1.79.1 - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop@v1.78.0...v1.79.1) --- updated-dependencies: - dependency-name: rubocop dependency-version: 1.79.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: ruby-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Updates the test for Python 3.9 with pip to perform a second build that tests the cached rebuild, ready for a fix to the log output cleanup regex in a later PR (pip outputs a different path style with older Python). * Moves the outdated version tests around to be more consistent with the equivalent tests for other package managers. GUS-W-19183260.
…1851) On older Python pip outputs paths in a different format. The log output cleanup regex has now been updated to match against that output too (in addition to that of newer Python), so the log lines are cleaned up on Python 3.10 and older too. GUS-W-19183260.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
A new Shellcheck version was just released: https://github.com/koalaman/shellcheck/releases/tag/v0.11.0 ...which reports some new lint errors: ``` $ make lint In builds/build_python_runtime.sh line 38: if [[ ! " ${SUPPORTED_PYTHON_VERSIONS[*]} " == *" ${PYTHON_MAJOR_VERSION} "* ]]; then ^-- SC2335 (style): Use a != b instead of ! a == b. For more information: https://www.shellcheck.net/wiki/SC2335 -- Use a != b instead of ! a == b. make: *** [lint-scripts] Error 1 ``` GUS-W-19245644.
For historical reasons, the classic Python buildpack has installed the `libsqlite3-dev`, `libsqlite3-0` and `sqlite3` packages as part of the build. However, these are not actually required for the Python `sqlite3` stdlib module to work (since the headers are installed in the `Dockerfile` used specifically for those builds): https://docs.python.org/3/library/sqlite3.html There is also a `pysqlite3` package on PyPI that uses the headers, however: 1. It's virtually identical to the stdlib module with Python, and so most apps should just use the stdlib's `sqlite3` module instead. 2. For apps that absolutely must use `pysqlite3`, the maintainer of that package makes a pre-compiled binary version of the package available that can be used without the need for headers: `pysqlite3-binary` 3. For apps that really want to install `pysqlite3` from source (or have some other need for the SQLite headers), they can be installed using the APT buildpack by adding `libsqlite3-dev` and `libsqlite3-0` to the `Aptfile`. Metrics show that only two apps built in the last 60 days use the `pysqlite3` package, confirming that including the headers by default does not make sense. This just leaves the SQLite CLI, which: - Won't be very commonly used, given that most apps don't use SQLite due to the ephemeral storage on dynos - Is outside the scope of what this buildpack should be installing, and is why the APT buildpack exists ...and so is also something the buildpack shouldn't be installing itself. Instead, any apps that need the SQLite CLI should use the APT buildpack and add `sqlite3` to their `Aptfile`. By removing the installation of these packages, we: - Speed up the build (metrics show the install time over last 60 days has a P50 of 4.2s, average of 6.4s, P99.9 of 667s) - Improve build reliability, since it no longer depends on the uptime of the Ubuntu APT mirror - Improve parity with the Python CNB, which doesn't install the SQLite headers or CLI either - (As an added bonus) Reduce the slug size slightly The buildpack already doesn't install these packages when using Python 3.13 (which is the buildpack's default Python version), or when using Poetry or uv. As such, this change only affects apps using Python 3.12 or older, with pip or Pipenv. Closes #1703. GUS-W-18915614.
) Bumps the ruby-dependencies group with 1 update: [rubocop](https://github.com/rubocop/rubocop). Updates `rubocop` from 1.79.1 to 1.79.2 - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop@v1.79.1...v1.79.2) --- updated-dependencies: - dependency-name: rubocop dependency-version: 1.79.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: ruby-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
* Bump pip from 25.1.1 to 25.2 Bumps [pip](https://github.com/pypa/pip) from 25.1.1 to 25.2. - [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst) - [Commits](pypa/pip@25.1.1...25.2) --- updated-dependencies: - dependency-name: pip dependency-version: '25.2' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry * Update build log assertion for new pip output --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
* Bump poetry from 2.1.3 to 2.1.4 Bumps [poetry](https://github.com/python-poetry/poetry) from 2.1.3 to 2.1.4. - [Release notes](https://github.com/python-poetry/poetry/releases) - [Changelog](https://github.com/python-poetry/poetry/blob/main/CHANGELOG.md) - [Commits](python-poetry/poetry@2.1.3...2.1.4) --- updated-dependencies: - dependency-name: poetry dependency-version: 2.1.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
* Bump uv from 0.8.4 to 0.8.5 Bumps [uv](https://github.com/astral-sh/uv) from 0.8.4 to 0.8.5. - [Release notes](https://github.com/astral-sh/uv/releases) - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md) - [Commits](astral-sh/uv@0.8.4...0.8.5) --- updated-dependencies: - dependency-name: uv dependency-version: 0.8.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
* Bump uv from 0.11.6 to 0.11.11 Bumps [uv](https://github.com/astral-sh/uv) from 0.11.6 to 0.11.11. - [Release notes](https://github.com/astral-sh/uv/releases) - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md) - [Commits](astral-sh/uv@0.11.6...0.11.11) --- updated-dependencies: - dependency-name: uv dependency-version: 0.11.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
* Bump pip from 26.0.1 to 26.1.1 Bumps [pip](https://github.com/pypa/pip) from 26.0.1 to 26.1.1. - [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst) - [Commits](pypa/pip@26.0.1...26.1.1) --- updated-dependencies: - dependency-name: pip dependency-version: 26.1.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Bumps [poetry](https://github.com/python-poetry/poetry) from 2.3.4 to 2.4.0. - [Release notes](https://github.com/python-poetry/poetry/releases) - [Changelog](https://github.com/python-poetry/poetry/blob/main/CHANGELOG.md) - [Commits](python-poetry/poetry@2.3.4...2.4.0) --- updated-dependencies: - dependency-name: poetry dependency-version: 2.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump pipenv from 2026.5.2 to 2026.6.1 Bumps [pipenv](https://github.com/pypa/pipenv) from 2026.5.2 to 2026.6.1. - [Release notes](https://github.com/pypa/pipenv/releases) - [Changelog](https://github.com/pypa/pipenv/blob/main/CHANGELOG.md) - [Commits](pypa/pipenv@v2026.5.2...v2026.6.1) --- updated-dependencies: - dependency-name: pipenv dependency-version: 2026.6.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entry --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
To reduce the amount of PR rebasing that has to occur each month when we update the Python package manager versions, given that they need CHANGELOG.md entries each, which otherwise cause conflicts. See: https://docs.github.com/en/code-security/reference/supply-chain-security/dependabot-options-reference#groups-- GUS-W-22400243.
Since the schema requires at least one property to be specified under the `groups` key, even if we're not wanting to add filters. See: https://www.schemastore.org/dependabot-2.0.json GUS-W-22400243.
* Prepare release v344 * Fix misc typo --------- Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
) * Bump rubocop from 1.86.1 to 1.87.0 in the ruby-dependencies group Bumps the ruby-dependencies group with 1 update: [rubocop](https://github.com/rubocop/rubocop). Updates `rubocop` from 1.86.1 to 1.87.0 - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop@v1.86.1...v1.87.0) --- updated-dependencies: - dependency-name: rubocop dependency-version: 1.87.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: ruby-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> * Fix and refresh lockfile --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
…2098) * Bump the python-dependencies group across 1 directory with 3 updates Bumps the python-dependencies group with 3 updates in the / directory: [poetry](https://github.com/python-poetry/poetry), [uv](https://github.com/astral-sh/uv) and [pip](https://github.com/pypa/pip). Updates `poetry` from 2.4.0 to 2.4.1 - [Release notes](https://github.com/python-poetry/poetry/releases) - [Changelog](https://github.com/python-poetry/poetry/blob/main/CHANGELOG.md) - [Commits](python-poetry/poetry@2.4.0...2.4.1) Updates `uv` from 0.11.11 to 0.11.19 - [Release notes](https://github.com/astral-sh/uv/releases) - [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md) - [Commits](astral-sh/uv@0.11.11...0.11.19) Updates `pip` from 26.1.1 to 26.1.2 - [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst) - [Commits](pypa/pip@26.1.1...26.1.2) --- updated-dependencies: - dependency-name: pip dependency-version: 26.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: python-dependencies - dependency-name: poetry dependency-version: 2.4.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: python-dependencies - dependency-name: uv dependency-version: 0.11.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: python-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> * Update changelog --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Calls the shared `_classic-buildpack-publish.yml` workflow from `heroku/languages-github-actions` to publish the `heroku/python` buildpack to the registry via OIDC. Auto-triggers when the Linguist-authored "Prepare release" PR is merged to `main` (guarded on event, branch, repo, and PR author). Also supports manual `workflow_dispatch`. Mirrors the pattern established in heroku/heroku-buildpack-nodejs#1653. GUS-W-22295409 is the reference implementation; this is the python caller workflow for the OIDC-Based Classic Buildpack Publishing epic. GUS-W-22295419.
…g newline (#2102) The `profile.d/` scripts test asserts on captured `run_multi` command output using an exact match against a heredoc. The platform log stream that captures the output occasionally appends an extra trailing newline, which intermittently breaks these exact assertions. For example: https://github.com/heroku/heroku-buildpack-python/actions/runs/27144980449/job/80156740097?pr=2099#step:5:628 ``` Failures: 1) .profile.d/ scripts sets the required run-time env vars Failure/Error: expect(output).to eq(<<~OUTPUT) Python buildpack: Detected 512 MB available memory and 8 CPU cores. Python buildpack: Skipping automatic configuration of WEB_CONCURRENCY since it's already set. DYNO_RAM=512 WEB_CONCURRENCY=999 OUTPUT expected: "Python buildpack: Detected 512 MB available memory and 8 CPU cores.\nPython buildpack: Skipping auto...matic configuration of WEB_CONCURRENCY since it's already set.\nDYNO_RAM=512\nWEB_CONCURRENCY=999\n" got: "Python buildpack: Detected 512 MB available memory and 8 CPU cores.\nPython buildpack: Skipping auto...tic configuration of WEB_CONCURRENCY since it's already set.\nDYNO_RAM=512\nWEB_CONCURRENCY=999\n\n" (compared using ==) # ./spec/hatchet/profile_d_scripts_spec.rb:128:in 'block (4 levels) in <top (required)>' # ./vendor/bundle/ruby/4.0.0/gems/heroku_hatchet-8.0.6/lib/hatchet/app.rb:255:in 'block in Hatchet::App#run_multi' ``` Adds a `normalize_trailing_newlines` spec helper that collapses any trailing newlines down to a single one, and applies it to the exact-match assertions in the test. This absorbs the spurious trailing newline whilst still asserting on the rest of the output exactly. GUS-W-22900269.
#2103) Bumps the ruby-dependencies group with 1 update: [rubocop-rspec](https://github.com/rubocop/rubocop-rspec). Updates `rubocop-rspec` from 3.9.0 to 3.10.2 - [Release notes](https://github.com/rubocop/rubocop-rspec/releases) - [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop-rspec@v3.9.0...v3.10.2) --- updated-dependencies: - dependency-name: rubocop-rspec dependency-version: 3.10.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: ruby-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Release announcement: https://blog.python.org/2026/06/python-3146-31314/ Changelogs: https://docs.python.org/release/3.14.6/whatsnew/changelog.html#python-3-14-6-final https://docs.python.org/release/3.13.14/whatsnew/changelog.html#python-3-13-14-final Binary builds: https://github.com/heroku/heroku-buildpack-python/actions/runs/27281631125 https://github.com/heroku/heroku-buildpack-python/actions/runs/27289906221 GUS-W-20590506. GUS-W-20590551.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
`PYTHONUNBUFFERED` affects stdout and stderr, not stdin: https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED And updates the comment to actually explain the why not the what. GUS-W-23030029.
…2113) builds/Dockerfile matched only the `* @heroku/languages` catch-all, so Dependabot cosign bumps requested team review. Add an override to route it to the maintainer, like the other Dependabot-touched paths. GUS-W-23276629.
Bumps sigstore/cosign/cosign from v3.0.6 to v3.1.1. --- updated-dependencies: - dependency-name: sigstore/cosign/cosign dependency-version: v3.1.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v6...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
) Bumps the ruby-dependencies group with 1 update: [rubocop](https://github.com/rubocop/rubocop). Updates `rubocop` from 1.87.0 to 1.88.1 - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop@v1.87.0...v1.88.1) --- updated-dependencies: - dependency-name: rubocop dependency-version: 1.88.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: ruby-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Passes `HONEYCOMB_API_KEY` through to the shared `_classic-buildpack-publish.yml@latest` workflow, enabling a Honeycomb release marker on the `builds` dataset for each production publish of this classic buildpack. GUS-W-22846373.
…ne (#2115) The platform log stream that captures one-off dyno (`app.run`) output occasionally appends an extra trailing newline, which intermittently breaks exact-match (`.to eq`) output assertions. For example: https://github.com/heroku/heroku-buildpack-python/actions/runs/28526498507/job/85081876325?pr=2110#step:5:589 This is the same flakiness that #2102 fixed for the `profile.d/` scripts test. Reuses the existing `normalize_trailing_newlines` spec helper to absorb the spurious newline while still asserting on the rest of the output exactly, applying it to the seven `app.run` exact-match assertions. GUS-W-23366753.
…2111) * Bump the python-dependencies group across 1 directory with 2 updates --- updated-dependencies: - dependency-name: pipenv dependency-version: 2026.6.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: python-dependencies - dependency-name: uv dependency-version: 0.11.26 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: python-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> * Add changelog entries * Fix uv lockfile-out-of-sync spec assertion --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ed Morley <emorley@salesforce.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
To match the templates at: https://github.com/salesforce/oss-template GUS-W-23426985.
We're not updating setuptools to v71+ due to its new approach to vendored dependencies, so it doesn't need to be managed by Dependabot: #1630 (comment) Remove the requirements file and Dependabot ignore entry, and hardcode the version directly where it's used. This also stops Dependabot security updates from re-opening PRs for it (which bypass the ignore list). GUS-W-23572996.
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.
No description provided.