Skip to content

Commit

Permalink
bump-formula-pr: update Python resources for non-PyPI formulae
Browse files Browse the repository at this point in the history
This extends previous logic to include non-PyPI formulae that are
specified within pypi_formula_mappings.json.

Signed-off-by: Michael Cho <[email protected]>
  • Loading branch information
cho-m committed Mar 1, 2024
1 parent 977ac20 commit 05641e2
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
10 changes: 8 additions & 2 deletions Library/Homebrew/dev-cmd/bump-formula-pr.rb
Expand Up @@ -324,13 +324,19 @@ def bump_formula_pr
end

unless args.dry_run?
ignore_non_pypi_packages = formula.tap&.pypi_formula_mappings&.key?(formula.full_name).blank?
version_or_url_kwargs = if ignore_non_pypi_packages || PyPI.pypi_url?(new_url)

Check warning on line 328 in Library/Homebrew/dev-cmd/bump-formula-pr.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/dev-cmd/bump-formula-pr.rb#L328

Added line #L328 was not covered by tests
{ version: new_formula_version.to_s }
else
{ url: new_url }
end
resources_checked = PyPI.update_python_resources! formula,
version: new_formula_version.to_s,
package_name: args.python_package_name,
extra_packages: args.python_extra_packages,
exclude_packages: args.python_exclude_packages,
silent: args.quiet?,
ignore_non_pypi_packages: true
ignore_non_pypi_packages: ignore_non_pypi_packages,
**version_or_url_kwargs
end

run_audit(formula, alias_rename, old_contents, args: args)
Expand Down
21 changes: 12 additions & 9 deletions Library/Homebrew/utils/pypi.rb
Expand Up @@ -18,7 +18,7 @@ def initialize(package_string, is_url: false, python_name: "python")
@pypi_info = nil
@package_string = package_string
@is_url = is_url
@is_pypi_url = package_string.start_with? PYTHONHOSTED_URL_PREFIX
@is_pypi_url = PyPI.pypi_url?(package_string)
@python_name = python_name
end

Expand Down Expand Up @@ -195,6 +195,7 @@ def self.update_pypi_url(url, version)
params(
formula: Formula,
version: T.nilable(String),
url: T.nilable(String),
package_name: T.nilable(String),
extra_packages: T.nilable(T::Array[String]),
exclude_packages: T.nilable(T::Array[String]),
Expand All @@ -204,7 +205,7 @@ def self.update_pypi_url(url, version)
ignore_non_pypi_packages: T.nilable(T::Boolean),
).returns(T.nilable(T::Boolean))
}
def self.update_python_resources!(formula, version: nil, package_name: nil, extra_packages: nil,
def self.update_python_resources!(formula, version: nil, url: nil, package_name: nil, extra_packages: nil,
exclude_packages: nil, print_only: false, silent: false, verbose: false,
ignore_non_pypi_packages: false)

Expand Down Expand Up @@ -244,11 +245,8 @@ def self.update_python_resources!(formula, version: nil, package_name: nil, extr
nil
else
stable = T.must(formula.stable)
url = if stable.specs[:tag].present?
url = "git+#{stable.url}@#{stable.specs[:tag]}"
else
stable.url
end
url = stable.url if url.blank?
url = "git+#{url}@#{stable.specs[:tag]}" if stable.specs[:tag].present?
Package.new(url, is_url: true, python_name: python_name)
end

Expand All @@ -260,8 +258,8 @@ def self.update_python_resources!(formula, version: nil, package_name: nil, extr
else
return if ignore_non_pypi_packages

odie "The main package is not a PyPI package, meaning that version-only updates cannot be \
performed. Please update its URL manually."
odie "The main package is not a PyPI package, meaning that version-only updates cannot be " \

Check warning on line 261 in Library/Homebrew/utils/pypi.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/utils/pypi.rb#L261

Added line #L261 was not covered by tests
"performed. Please update its URL manually."
end
end

Expand Down Expand Up @@ -403,4 +401,9 @@ def self.pip_report_to_packages(report)
Package.new "#{name}==#{version}"
end
end

sig { params(url: String).returns(T::Boolean) }
def self.pypi_url?(url)
url.start_with?(PYTHONHOSTED_URL_PREFIX)
end
end

0 comments on commit 05641e2

Please sign in to comment.