diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 634fa73110e28b..f0527b046c6dac 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -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) + { 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) diff --git a/Library/Homebrew/utils/pypi.rb b/Library/Homebrew/utils/pypi.rb index 3899bc68bd65f9..f63d4ae6228f81 100644 --- a/Library/Homebrew/utils/pypi.rb +++ b/Library/Homebrew/utils/pypi.rb @@ -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 @@ -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]), @@ -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) @@ -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 @@ -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 " \ + "performed. Please update its URL manually." end end @@ -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