Skip to content

Commit 2cdde89

Browse files
authored
Merge branch 'main' into exp/pypi-simplify
2 parents 82e1532 + 6f27511 commit 2cdde89

File tree

7 files changed

+147
-35
lines changed

7 files changed

+147
-35
lines changed

.bazelci/presubmit.yml

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -91,20 +91,20 @@ tasks:
9191
<<: *common_workspace_flags_min_bazel
9292
<<: *minimum_supported_version
9393
name: "Gazelle: workspace, minimum supported Bazel version"
94-
platform: ubuntu2004
94+
platform: ubuntu2204
9595
build_targets: ["//..."]
9696
test_targets: ["//..."]
9797
working_directory: gazelle
9898
gazelle_extension_workspace:
9999
<<: *common_workspace_flags
100100
name: "Gazelle: workspace"
101-
platform: ubuntu2004
101+
platform: ubuntu2204
102102
build_targets: ["//..."]
103103
test_targets: ["//..."]
104104
working_directory: gazelle
105105
gazelle_extension:
106106
name: "Gazelle: default settings"
107-
platform: ubuntu2004
107+
platform: ubuntu2204
108108
build_targets: ["//..."]
109109
test_targets: ["//..."]
110110
working_directory: gazelle
@@ -114,28 +114,28 @@ tasks:
114114
<<: *reusable_config
115115
<<: *common_workspace_flags_min_bazel
116116
name: "Default: Ubuntu, workspace, minimum Bazel"
117-
platform: ubuntu2004
117+
platform: ubuntu2204
118118

119119
ubuntu_min_bzlmod:
120120
<<: *minimum_supported_version
121121
<<: *reusable_config
122122
name: "Default: Ubuntu, bzlmod, minimum Bazel"
123-
platform: ubuntu2004
123+
platform: ubuntu2204
124124
bazel: 7.x
125125
ubuntu:
126126
<<: *reusable_config
127127
name: "Default: Ubuntu"
128-
platform: ubuntu2004
128+
platform: ubuntu2204
129129
ubuntu_upcoming:
130130
<<: *reusable_config
131131
name: "Default: Ubuntu, upcoming Bazel"
132-
platform: ubuntu2004
132+
platform: ubuntu2204
133133
bazel: last_rc
134134
ubuntu_workspace:
135135
<<: *reusable_config
136136
<<: *common_workspace_flags
137137
name: "Default: Ubuntu, workspace"
138-
platform: ubuntu2004
138+
platform: ubuntu2204
139139
mac_workspace:
140140
<<: *reusable_config
141141
<<: *common_workspace_flags
@@ -185,7 +185,7 @@ tasks:
185185
<<: *minimum_supported_version
186186
<<: *reusable_config
187187
name: "RBE: Ubuntu, minimum Bazel"
188-
platform: rbe_ubuntu2004
188+
platform: rbe_ubuntu2204
189189
build_flags:
190190
# BazelCI sets --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1,
191191
# which prevents cc toolchain autodetection from working correctly
@@ -203,7 +203,7 @@ tasks:
203203
rbe:
204204
<<: *reusable_config
205205
name: "RBE: Ubuntu"
206-
platform: rbe_ubuntu2004
206+
platform: rbe_ubuntu2204
207207
# TODO @aignas 2024-12-11: get the RBE working in CI for bazel 8.0
208208
# See https://github.com/bazelbuild/rules_python/issues/2499
209209
bazel: 7.x
@@ -217,13 +217,13 @@ tasks:
217217
<<: *common_workspace_flags_min_bazel
218218
name: "examples/build_file_generation: Ubuntu, workspace, minimum Bazel"
219219
working_directory: examples/build_file_generation
220-
platform: ubuntu2004
220+
platform: ubuntu2204
221221
integration_test_build_file_generation_ubuntu_workspace:
222222
<<: *reusable_build_test_all
223223
<<: *common_workspace_flags
224224
name: "examples/build_file_generation: Ubuntu, workspace"
225225
working_directory: examples/build_file_generation
226-
platform: ubuntu2004
226+
platform: ubuntu2204
227227
integration_test_build_file_generation_debian_workspace:
228228
<<: *reusable_build_test_all
229229
<<: *common_workspace_flags
@@ -249,21 +249,21 @@ tasks:
249249
coverage_targets: ["//:test"]
250250
name: "examples/bzlmod: Ubuntu, minimum Bazel"
251251
working_directory: examples/bzlmod
252-
platform: ubuntu2004
252+
platform: ubuntu2204
253253
bazel: 7.x
254254
integration_test_bzlmod_ubuntu:
255255
<<: *reusable_build_test_all
256256
<<: *coverage_targets_example_bzlmod
257257
name: "examples/bzlmod: Ubuntu"
258258
working_directory: examples/bzlmod
259-
platform: ubuntu2004
259+
platform: ubuntu2204
260260
bazel: 7.x
261261
integration_test_bzlmod_ubuntu_upcoming:
262262
<<: *reusable_build_test_all
263263
<<: *coverage_targets_example_bzlmod
264264
name: "examples/bzlmod: Ubuntu, upcoming Bazel"
265265
working_directory: examples/bzlmod
266-
platform: ubuntu2004
266+
platform: ubuntu2204
267267
bazel: last_rc
268268
integration_test_bzlmod_debian:
269269
<<: *reusable_build_test_all
@@ -276,7 +276,7 @@ tasks:
276276
<<: *reusable_build_test_all
277277
name: "examples/bzlmod: bazel vendor"
278278
working_directory: examples/bzlmod
279-
platform: ubuntu2004
279+
platform: ubuntu2204
280280
shell_commands:
281281
- "bazel vendor --vendor_dir=./vendor //..."
282282
- "bazel build --vendor_dir=./vendor //..."
@@ -316,19 +316,19 @@ tasks:
316316
<<: *coverage_targets_example_bzlmod_build_file_generation
317317
name: "examples/bzlmod_build_file_generation: Ubuntu, minimum Bazel"
318318
working_directory: examples/bzlmod_build_file_generation
319-
platform: ubuntu2004
319+
platform: ubuntu2204
320320
bazel: 7.x
321321
integration_test_bzlmod_generation_build_files_ubuntu:
322322
<<: *reusable_build_test_all
323323
<<: *coverage_targets_example_bzlmod_build_file_generation
324324
name: "examples/bzlmod_build_file_generation: Ubuntu"
325325
working_directory: examples/bzlmod_build_file_generation
326-
platform: ubuntu2004
326+
platform: ubuntu2204
327327
integration_test_bzlmod_generation_build_files_ubuntu_run:
328328
<<: *reusable_build_test_all
329329
name: "examples/bzlmod_build_file_generation: Ubuntu, Gazelle and pip"
330330
working_directory: examples/bzlmod_build_file_generation
331-
platform: ubuntu2004
331+
platform: ubuntu2204
332332
shell_commands:
333333
- "bazel run //:gazelle_python_manifest.update"
334334
- "bazel run //:gazelle -- update"
@@ -357,7 +357,7 @@ tasks:
357357
<<: *coverage_targets_example_multi_python
358358
name: "examples/multi_python_versions: Ubuntu, workspace"
359359
working_directory: examples/multi_python_versions
360-
platform: ubuntu2004
360+
platform: ubuntu2204
361361
integration_test_multi_python_versions_debian_workspace:
362362
<<: *reusable_build_test_all
363363
<<: *common_workspace_flags
@@ -386,19 +386,19 @@ tasks:
386386
<<: *reusable_build_test_all
387387
name: "examples/pip_parse: Ubuntu, workspace, minimum supported Bazel version"
388388
working_directory: examples/pip_parse
389-
platform: ubuntu2004
389+
platform: ubuntu2204
390390
integration_test_pip_parse_ubuntu_min_bzlmod:
391391
<<: *minimum_supported_version
392392
<<: *reusable_build_test_all
393393
name: "examples/pip_parse: Ubuntu, bzlmod, minimum supported Bazel version"
394394
working_directory: examples/pip_parse
395-
platform: ubuntu2004
395+
platform: ubuntu2204
396396
bazel: 7.x
397397
integration_test_pip_parse_ubuntu:
398398
<<: *reusable_build_test_all
399399
name: "examples/pip_parse: Ubuntu"
400400
working_directory: examples/pip_parse
401-
platform: ubuntu2004
401+
platform: ubuntu2204
402402
integration_test_pip_parse_debian:
403403
<<: *reusable_build_test_all
404404
name: "examples/pip_parse: Debian"
@@ -421,13 +421,13 @@ tasks:
421421
<<: *reusable_build_test_all
422422
name: "examples/pip_parse_vendored: Ubuntu, workspace, minimum Bazel"
423423
working_directory: examples/pip_parse_vendored
424-
platform: ubuntu2004
424+
platform: ubuntu2204
425425
integration_test_pip_parse_vendored_ubuntu:
426426
<<: *reusable_build_test_all
427427
<<: *common_workspace_flags
428428
name: "examples/pip_parse_vendored: Ubuntu"
429429
working_directory: examples/pip_parse_vendored
430-
platform: ubuntu2004
430+
platform: ubuntu2204
431431
integration_test_pip_parse_vendored_debian:
432432
<<: *reusable_build_test_all
433433
<<: *common_workspace_flags
@@ -450,7 +450,7 @@ tasks:
450450
<<: *common_workspace_flags
451451
name: "examples/py_proto_library: Ubuntu, workspace"
452452
working_directory: examples/py_proto_library
453-
platform: ubuntu2004
453+
platform: ubuntu2204
454454
integration_test_py_proto_library_debian_workspace:
455455
<<: *reusable_build_test_all
456456
<<: *common_workspace_flags
@@ -475,7 +475,7 @@ tasks:
475475
<<: *common_workspace_flags
476476
name: "examples/pip_repository_annotations: Ubuntu, workspace"
477477
working_directory: examples/pip_repository_annotations
478-
platform: ubuntu2004
478+
platform: ubuntu2204
479479
integration_test_pip_repository_annotations_debian_workspace:
480480
<<: *reusable_build_test_all
481481
<<: *common_workspace_flags
@@ -498,7 +498,7 @@ tasks:
498498
integration_test_bazelinbazel_ubuntu:
499499
<<: *common_bazelinbazel_config
500500
name: "tests/integration bazel-in-bazel: Ubuntu"
501-
platform: ubuntu2004
501+
platform: ubuntu2204
502502
integration_test_bazelinbazel_debian:
503503
<<: *common_bazelinbazel_config
504504
name: "tests/integration bazel-in-bazel: Debian"
@@ -508,7 +508,7 @@ tasks:
508508
<<: *reusable_build_test_all
509509
name: "compile_pip_requirements: Ubuntu"
510510
working_directory: tests/integration/compile_pip_requirements
511-
platform: ubuntu2004
511+
platform: ubuntu2204
512512
shell_commands:
513513
# Make a change to the locked requirements and then assert that //:requirements.update does the
514514
# right thing.
@@ -596,23 +596,23 @@ tasks:
596596
<<: *common_workspace_flags_min_bazel
597597
name: "compile_pip_requirements_test_from_external_repo: Ubuntu, workspace, minimum Bazel"
598598
working_directory: tests/integration/compile_pip_requirements_test_from_external_repo
599-
platform: ubuntu2004
599+
platform: ubuntu2204
600600
shell_commands:
601601
# Assert that @compile_pip_requirements//:requirements_test does the right thing.
602602
- "bazel test @compile_pip_requirements//..."
603603
integration_compile_pip_requirements_test_from_external_repo_ubuntu_min_bzlmod:
604604
<<: *minimum_supported_version
605605
name: "compile_pip_requirements_test_from_external_repo: Ubuntu, bzlmod, minimum Bazel"
606606
working_directory: tests/integration/compile_pip_requirements_test_from_external_repo
607-
platform: ubuntu2004
607+
platform: ubuntu2204
608608
bazel: 7.x
609609
shell_commands:
610610
# Assert that @compile_pip_requirements//:requirements_test does the right thing.
611611
- "bazel test @compile_pip_requirements//..."
612612
integration_compile_pip_requirements_test_from_external_repo_ubuntu:
613613
name: "compile_pip_requirements_test_from_external_repo: Ubuntu"
614614
working_directory: tests/integration/compile_pip_requirements_test_from_external_repo
615-
platform: ubuntu2004
615+
platform: ubuntu2204
616616
shell_commands:
617617
# Assert that @compile_pip_requirements//:requirements_test does the right thing.
618618
- "bazel test @compile_pip_requirements//..."

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ END_UNRELEASED_TEMPLATE
7373
`osx_x86_64`, `osx_aarch64` and `windows_x86_64`. If you are on other platforms, you need to
7474
use the `pip.default` to configure it yourself. If you are interested in graduating the
7575
platform, consider helping set us up CI for them and update the documentation.
76+
* (ci) We are now testing on Ubuntu 22.04 for RBE and non-RBE configurations.
7677

7778
{#v0-0-0-fixed}
7879
### Fixed
@@ -94,6 +95,7 @@ END_UNRELEASED_TEMPLATE
9495
in ambiguous select matches ({gh-issue}`2759`) and should be much more efficient
9596
when running `bazel query` due to fewer repositories being included
9697
({gh-issue}`2849`).
98+
* Multi-line python imports (e.g. with escaped newlines) are now correctly processed by Gazelle.
9799

98100
{#v0-0-0-added}
99101
### Added

WORKSPACE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ load("@bazelci_rules//:rbe_repo.bzl", "rbe_preconfig")
9595
# otherwise refer to RBE docs.
9696
rbe_preconfig(
9797
name = "buildkite_config",
98-
toolchain = "ubuntu1804-bazel-java11",
98+
toolchain = "ubuntu2204",
9999
)
100100

101101
local_repository(

gazelle/python/file_parser.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,16 @@ func parseImportStatement(node *sitter.Node, code []byte) (Module, bool) {
144144
return Module{}, false
145145
}
146146

147+
// cleanImportString removes backslashes and all whitespace from the string.
148+
func cleanImportString(s string) string {
149+
s = strings.ReplaceAll(s, "\r\n", "")
150+
s = strings.ReplaceAll(s, "\\", "")
151+
s = strings.ReplaceAll(s, " ", "")
152+
s = strings.ReplaceAll(s, "\n", "")
153+
s = strings.ReplaceAll(s, "\t", "")
154+
return s
155+
}
156+
147157
// parseImportStatements parses a node for import statements, returning true if the node is
148158
// an import statement. It updates FileParser.output.Modules with the `module` that the
149159
// import represents.
@@ -154,6 +164,8 @@ func (p *FileParser) parseImportStatements(node *sitter.Node) bool {
154164
if !ok {
155165
continue
156166
}
167+
m.From = cleanImportString(m.From)
168+
m.Name = cleanImportString(m.Name)
157169
m.Filepath = p.relFilepath
158170
m.TypeCheckingOnly = p.inTypeCheckingBlock
159171
if strings.HasPrefix(m.Name, ".") {
@@ -163,6 +175,7 @@ func (p *FileParser) parseImportStatements(node *sitter.Node) bool {
163175
}
164176
} else if node.Type() == sitterNodeTypeImportFromStatement {
165177
from := node.Child(1).Content(p.code)
178+
from = cleanImportString(from)
166179
// If the import is from the current package, we don't need to add it to the modules i.e. from . import Class1.
167180
// If the import is from a different relative package i.e. from .package1 import foo, we need to add it to the modules.
168181
if from == "." {
@@ -175,6 +188,7 @@ func (p *FileParser) parseImportStatements(node *sitter.Node) bool {
175188
}
176189
m.Filepath = p.relFilepath
177190
m.From = from
191+
m.Name = cleanImportString(m.Name)
178192
m.Name = fmt.Sprintf("%s.%s", from, m.Name)
179193
m.TypeCheckingOnly = p.inTypeCheckingBlock
180194
p.output.Modules = append(p.output.Modules, m)

0 commit comments

Comments
 (0)