709/from imports (#760)

* Support "from" imports in the python gazelle plugin.

Fixes #709.

* Test case for pip imports using "from foo import bar".

* Test cases for imports of the form "from foo import bar".

* Remove unnecessary flag (replaced with continue's).

* Make sure from imports work with std modules.

- Add test case with `from __future__ import print_function`.

* Fix indentation error.

- Make sure that `from foo import bar, baz` works.
- Add test case for this.

* Fix error message.

- Keep error the same as before.

Co-authored-by: Thulio Ferraz Assis <3149049+f0rmiga@users.noreply.github.com>
diff --git a/gazelle/parse.py b/gazelle/parse.py
index dec3a16..6b07c0e 100644
--- a/gazelle/parse.py
+++ b/gazelle/parse.py
@@ -21,15 +21,18 @@
                     "name": subnode.name,
                     "lineno": node.lineno,
                     "filepath": filepath,
+                    "from": ""
                 }
                 modules.append(module)
         elif isinstance(node, ast.ImportFrom) and node.level == 0:
-            module = {
-                "name": node.module,
-                "lineno": node.lineno,
-                "filepath": filepath,
-            }
-            modules.append(module)
+            for subnode in node.names:
+                module = {
+                    "name": f"{node.module}.{subnode.name}",
+                    "lineno": node.lineno,
+                    "filepath": filepath,
+                    "from": node.module
+                }
+                modules.append(module)
     return modules
 
 
@@ -47,9 +50,10 @@
     abs_filepath = os.path.join(repo_root, rel_filepath)
     with open(abs_filepath, "r") as file:
         content = file.read()
-       # From simple benchmarks, 2 workers gave the best performance here.
+        # From simple benchmarks, 2 workers gave the best performance here.
         with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
-            modules_future = executor.submit(parse_import_statements, content, rel_filepath)
+            modules_future = executor.submit(parse_import_statements, content,
+                                             rel_filepath)
             comments_future = executor.submit(parse_comments, content)
         modules = modules_future.result()
         comments = comments_future.result()
@@ -69,11 +73,12 @@
             filenames = parse_request["filenames"]
             outputs = list()
             if len(filenames) == 1:
-                outputs.append(parse(repo_root, rel_package_path, filenames[0]))
+                outputs.append(parse(repo_root, rel_package_path,
+                                     filenames[0]))
             else:
                 futures = [
-                    executor.submit(parse, repo_root, rel_package_path, filename)
-                    for filename in filenames
+                    executor.submit(parse, repo_root, rel_package_path,
+                                    filename) for filename in filenames
                     if filename != ""
                 ]
                 for future in concurrent.futures.as_completed(futures):
diff --git a/gazelle/parser.go b/gazelle/parser.go
index 2a82c94..d287caf 100644
--- a/gazelle/parser.go
+++ b/gazelle/parser.go
@@ -133,13 +133,13 @@
 		for _, m := range res.Modules {
 			// Check for ignored dependencies set via an annotation to the Python
 			// module.
-			if annotations.ignores(m.Name) {
+			if annotations.ignores(m.Name) || annotations.ignores(m.From) {
 				continue
 			}
 
 			// Check for ignored dependencies set via a Gazelle directive in a BUILD
 			// file.
-			if p.ignoresDependency(m.Name) {
+			if p.ignoresDependency(m.Name) || p.ignoresDependency(m.From) {
 				continue
 			}
 
@@ -170,6 +170,9 @@
 	LineNumber uint32 `json:"lineno"`
 	// The path to the module file relative to the Bazel workspace root.
 	Filepath string `json:"filepath"`
+	// If this was a from import, e.g. from foo import bar, From indicates the module
+	// from which it is imported.
+	From string `json:"from"`
 }
 
 // moduleComparator compares modules by name.
diff --git a/gazelle/resolve.go b/gazelle/resolve.go
index 8f68dfd..220876d 100644
--- a/gazelle/resolve.go
+++ b/gazelle/resolve.go
@@ -140,99 +140,126 @@
 		it := modules.Iterator()
 		explainDependency := os.Getenv("EXPLAIN_DEPENDENCY")
 		hasFatalError := false
-	MODULE_LOOP:
+	MODULES_LOOP:
 		for it.Next() {
 			mod := it.Value().(module)
-			imp := resolve.ImportSpec{Lang: languageName, Imp: mod.Name}
-			if override, ok := resolve.FindRuleWithOverride(c, imp, languageName); ok {
-				if override.Repo == "" {
-					override.Repo = from.Repo
-				}
-				if !override.Equal(from) {
-					if override.Repo == from.Repo {
-						override.Repo = ""
+			moduleParts := strings.Split(mod.Name, ".")
+			possibleModules := []string{mod.Name}
+			for len(moduleParts) > 1 {
+				// Iterate back through the possible imports until
+				// a match is found.
+				// For example, "from foo.bar import baz" where bar is a variable, we should try
+				// `foo.bar.baz` first, then `foo.bar`, then `foo`. In the first case, the import could be file `baz.py`
+				// in the directory `foo/bar`.
+				// Or, the import could be variable `bar` in file `foo/bar.py`.
+				// The import could also be from a standard module, e.g. `six.moves`, where
+				// the dependency is actually `six`.
+				moduleParts = moduleParts[:len(moduleParts)-1]
+				possibleModules = append(possibleModules, strings.Join(moduleParts, "."))
+			}
+			errs := []error{}
+		POSSIBLE_MODULE_LOOP:
+			for _, moduleName := range possibleModules {
+				imp := resolve.ImportSpec{Lang: languageName, Imp: moduleName}
+				if override, ok := resolve.FindRuleWithOverride(c, imp, languageName); ok {
+					if override.Repo == "" {
+						override.Repo = from.Repo
 					}
-					dep := override.String()
-					deps.Add(dep)
-					if explainDependency == dep {
-						log.Printf("Explaining dependency (%s): "+
-							"in the target %q, the file %q imports %q at line %d, "+
-							"which resolves using the \"gazelle:resolve\" directive.\n",
-							explainDependency, from.String(), mod.Filepath, mod.Name, mod.LineNumber)
-					}
-				}
-			} else {
-				if dep, ok := cfg.FindThirdPartyDependency(mod.Name); ok {
-					deps.Add(dep)
-					if explainDependency == dep {
-						log.Printf("Explaining dependency (%s): "+
-							"in the target %q, the file %q imports %q at line %d, "+
-							"which resolves from the third-party module %q from the wheel %q.\n",
-							explainDependency, from.String(), mod.Filepath, mod.Name, mod.LineNumber, mod.Name, dep)
+					if !override.Equal(from) {
+						if override.Repo == from.Repo {
+							override.Repo = ""
+						}
+						dep := override.String()
+						deps.Add(dep)
+						if explainDependency == dep {
+							log.Printf("Explaining dependency (%s): "+
+								"in the target %q, the file %q imports %q at line %d, "+
+								"which resolves using the \"gazelle:resolve\" directive.\n",
+								explainDependency, from.String(), mod.Filepath, moduleName, mod.LineNumber)
+						}
+						continue MODULES_LOOP
 					}
 				} else {
-					matches := ix.FindRulesByImportWithConfig(c, imp, languageName)
-					if len(matches) == 0 {
-						// Check if the imported module is part of the standard library.
-						if isStd, err := isStdModule(mod); err != nil {
-							log.Println("ERROR: ", err)
-							hasFatalError = true
-							continue MODULE_LOOP
-						} else if isStd {
-							continue MODULE_LOOP
+					if dep, ok := cfg.FindThirdPartyDependency(moduleName); ok {
+						deps.Add(dep)
+						if explainDependency == dep {
+							log.Printf("Explaining dependency (%s): "+
+								"in the target %q, the file %q imports %q at line %d, "+
+								"which resolves from the third-party module %q from the wheel %q.\n",
+								explainDependency, from.String(), mod.Filepath, moduleName, mod.LineNumber, mod.Name, dep)
 						}
-						if cfg.ValidateImportStatements() {
-							err := fmt.Errorf(
-								"%[1]q at line %[2]d from %[3]q is an invalid dependency: possible solutions:\n"+
-									"\t1. Add it as a dependency in the requirements.txt file.\n"+
-									"\t2. Instruct Gazelle to resolve to a known dependency using the gazelle:resolve directive.\n"+
-									"\t3. Ignore it with a comment '# gazelle:ignore %[1]s' in the Python file.\n",
-								mod.Name, mod.LineNumber, mod.Filepath,
-							)
-							log.Printf("ERROR: failed to validate dependencies for target %q: %v\n", from.String(), err)
-							hasFatalError = true
-							continue MODULE_LOOP
-						}
-					}
-					filteredMatches := make([]resolve.FindResult, 0, len(matches))
-					for _, match := range matches {
-						if match.IsSelfImport(from) {
-							// Prevent from adding itself as a dependency.
-							continue MODULE_LOOP
-						}
-						filteredMatches = append(filteredMatches, match)
-					}
-					if len(filteredMatches) == 0 {
-						continue
-					}
-					if len(filteredMatches) > 1 {
-						sameRootMatches := make([]resolve.FindResult, 0, len(filteredMatches))
-						for _, match := range filteredMatches {
-							if strings.HasPrefix(match.Label.Pkg, pythonProjectRoot) {
-								sameRootMatches = append(sameRootMatches, match)
+						continue MODULES_LOOP
+					} else {
+						matches := ix.FindRulesByImportWithConfig(c, imp, languageName)
+						if len(matches) == 0 {
+							// Check if the imported module is part of the standard library.
+							if isStd, err := isStdModule(module{Name: moduleName}); err != nil {
+								log.Println("Error checking if standard module: ", err)
+								hasFatalError = true
+								continue POSSIBLE_MODULE_LOOP
+							} else if isStd {
+								continue MODULES_LOOP
+							} else if cfg.ValidateImportStatements() {
+								err := fmt.Errorf(
+									"%[1]q at line %[2]d from %[3]q is an invalid dependency: possible solutions:\n"+
+										"\t1. Add it as a dependency in the requirements.txt file.\n"+
+										"\t2. Instruct Gazelle to resolve to a known dependency using the gazelle:resolve directive.\n"+
+										"\t3. Ignore it with a comment '# gazelle:ignore %[1]s' in the Python file.\n",
+									moduleName, mod.LineNumber, mod.Filepath,
+								)
+								errs = append(errs, err)
+								continue POSSIBLE_MODULE_LOOP
 							}
 						}
-						if len(sameRootMatches) != 1 {
-							err := fmt.Errorf(
-								"multiple targets (%s) may be imported with %q at line %d in %q "+
-									"- this must be fixed using the \"gazelle:resolve\" directive",
-								targetListFromResults(filteredMatches), mod.Name, mod.LineNumber, mod.Filepath)
-							log.Println("ERROR: ", err)
-							hasFatalError = true
-							continue MODULE_LOOP
+						filteredMatches := make([]resolve.FindResult, 0, len(matches))
+						for _, match := range matches {
+							if match.IsSelfImport(from) {
+								// Prevent from adding itself as a dependency.
+								continue MODULES_LOOP
+							}
+							filteredMatches = append(filteredMatches, match)
 						}
-						filteredMatches = sameRootMatches
-					}
-					matchLabel := filteredMatches[0].Label.Rel(from.Repo, from.Pkg)
-					dep := matchLabel.String()
-					deps.Add(dep)
-					if explainDependency == dep {
-						log.Printf("Explaining dependency (%s): "+
-							"in the target %q, the file %q imports %q at line %d, "+
-							"which resolves from the first-party indexed labels.\n",
-							explainDependency, from.String(), mod.Filepath, mod.Name, mod.LineNumber)
+						if len(filteredMatches) == 0 {
+							continue POSSIBLE_MODULE_LOOP
+						}
+						if len(filteredMatches) > 1 {
+							sameRootMatches := make([]resolve.FindResult, 0, len(filteredMatches))
+							for _, match := range filteredMatches {
+								if strings.HasPrefix(match.Label.Pkg, pythonProjectRoot) {
+									sameRootMatches = append(sameRootMatches, match)
+								}
+							}
+							if len(sameRootMatches) != 1 {
+								err := fmt.Errorf(
+									"multiple targets (%s) may be imported with %q at line %d in %q "+
+										"- this must be fixed using the \"gazelle:resolve\" directive",
+									targetListFromResults(filteredMatches), moduleName, mod.LineNumber, mod.Filepath)
+								errs = append(errs, err)
+								continue POSSIBLE_MODULE_LOOP
+							}
+							filteredMatches = sameRootMatches
+						}
+						matchLabel := filteredMatches[0].Label.Rel(from.Repo, from.Pkg)
+						dep := matchLabel.String()
+						deps.Add(dep)
+						if explainDependency == dep {
+							log.Printf("Explaining dependency (%s): "+
+								"in the target %q, the file %q imports %q at line %d, "+
+								"which resolves from the first-party indexed labels.\n",
+								explainDependency, from.String(), mod.Filepath, moduleName, mod.LineNumber)
+						}
+						continue MODULES_LOOP
 					}
 				}
+			} // End possible modules loop.
+			if len(errs) > 0 {
+				// If, after trying all possible modules, we still haven't found anything, error out.
+				joinedErrs := ""
+				for _, err := range errs {
+					joinedErrs = fmt.Sprintf("%s%s\n", joinedErrs, err)
+				}
+				log.Printf("ERROR: failed to validate dependencies for target %q: %v\n", from.String(), joinedErrs)
+				hasFatalError = true
 			}
 		}
 		if hasFatalError {
diff --git a/gazelle/testdata/from_imports/BUILD.in b/gazelle/testdata/from_imports/BUILD.in
new file mode 100644
index 0000000..93f2259
--- /dev/null
+++ b/gazelle/testdata/from_imports/BUILD.in
@@ -0,0 +1 @@
+# gazelle:python_extension enabled
diff --git a/gazelle/testdata/from_imports/BUILD.out b/gazelle/testdata/from_imports/BUILD.out
new file mode 100644
index 0000000..93f2259
--- /dev/null
+++ b/gazelle/testdata/from_imports/BUILD.out
@@ -0,0 +1 @@
+# gazelle:python_extension enabled
diff --git a/gazelle/testdata/from_imports/README.md b/gazelle/testdata/from_imports/README.md
new file mode 100644
index 0000000..161dd18
--- /dev/null
+++ b/gazelle/testdata/from_imports/README.md
@@ -0,0 +1,7 @@
+# From Imports
+
+This test case simulates imports of the form:
+
+```python
+from foo import bar
+```
diff --git a/gazelle/testdata/from_imports/WORKSPACE b/gazelle/testdata/from_imports/WORKSPACE
new file mode 100644
index 0000000..4959898
--- /dev/null
+++ b/gazelle/testdata/from_imports/WORKSPACE
@@ -0,0 +1 @@
+# This is a test data Bazel workspace.
diff --git a/gazelle/testdata/from_imports/foo/BUILD.in b/gazelle/testdata/from_imports/foo/BUILD.in
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/BUILD.in
@@ -0,0 +1 @@
+
diff --git a/gazelle/testdata/from_imports/foo/BUILD.out b/gazelle/testdata/from_imports/foo/BUILD.out
new file mode 100644
index 0000000..4404d30
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/BUILD.out
@@ -0,0 +1,8 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "foo",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+)
diff --git a/gazelle/testdata/from_imports/foo/__init__.py b/gazelle/testdata/from_imports/foo/__init__.py
new file mode 100644
index 0000000..8c4ff6a
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/__init__.py
@@ -0,0 +1 @@
+foo = "foo"
diff --git a/gazelle/testdata/from_imports/foo/bar/BUILD.in b/gazelle/testdata/from_imports/foo/bar/BUILD.in
new file mode 100644
index 0000000..fbbec02
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/bar/BUILD.in
@@ -0,0 +1,21 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+# gazelle:python_ignore_files baz.py
+
+py_library(
+    name = "baz",
+    srcs = [
+        "baz.py",
+    ],
+    imports = ["../.."],
+    visibility = ["//:__subpackages__"],
+)
+
+py_library(
+    name = "bar",
+    srcs = [
+        "__init__.py",
+    ],
+    imports = ["../.."],
+    visibility = ["//:__subpackages__"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/foo/bar/BUILD.out b/gazelle/testdata/from_imports/foo/bar/BUILD.out
new file mode 100644
index 0000000..fbbec02
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/bar/BUILD.out
@@ -0,0 +1,21 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+# gazelle:python_ignore_files baz.py
+
+py_library(
+    name = "baz",
+    srcs = [
+        "baz.py",
+    ],
+    imports = ["../.."],
+    visibility = ["//:__subpackages__"],
+)
+
+py_library(
+    name = "bar",
+    srcs = [
+        "__init__.py",
+    ],
+    imports = ["../.."],
+    visibility = ["//:__subpackages__"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/foo/bar/__init__.py b/gazelle/testdata/from_imports/foo/bar/__init__.py
new file mode 100644
index 0000000..2e96e09
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/bar/__init__.py
@@ -0,0 +1 @@
+bar = "bar"
diff --git a/gazelle/testdata/from_imports/foo/bar/baz.py b/gazelle/testdata/from_imports/foo/bar/baz.py
new file mode 100644
index 0000000..a15f053
--- /dev/null
+++ b/gazelle/testdata/from_imports/foo/bar/baz.py
@@ -0,0 +1 @@
+baz = "baz"
diff --git a/gazelle/testdata/from_imports/gazelle_python.yaml b/gazelle/testdata/from_imports/gazelle_python.yaml
new file mode 100644
index 0000000..5f7922f
--- /dev/null
+++ b/gazelle/testdata/from_imports/gazelle_python.yaml
@@ -0,0 +1,5 @@
+manifest:
+  modules_mapping:
+    boto3: rootboto3
+    boto4: rootboto4
+  pip_deps_repository_name: root_pip_deps
diff --git a/gazelle/testdata/from_imports/import_from_init_py/BUILD.in b/gazelle/testdata/from_imports/import_from_init_py/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_from_init_py/BUILD.in
diff --git a/gazelle/testdata/from_imports/import_from_init_py/BUILD.out b/gazelle/testdata/from_imports/import_from_init_py/BUILD.out
new file mode 100644
index 0000000..99b4861
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_from_init_py/BUILD.out
@@ -0,0 +1,9 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "import_from_init_py",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+    deps = ["//foo/bar"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/import_from_init_py/__init__.py b/gazelle/testdata/from_imports/import_from_init_py/__init__.py
new file mode 100644
index 0000000..350a327
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_from_init_py/__init__.py
@@ -0,0 +1,2 @@
+# bar is a variable inside foo/bar/__init__.py
+from foo.bar import bar
diff --git a/gazelle/testdata/from_imports/import_from_multiple/BUILD.in b/gazelle/testdata/from_imports/import_from_multiple/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_from_multiple/BUILD.in
diff --git a/gazelle/testdata/from_imports/import_from_multiple/BUILD.out b/gazelle/testdata/from_imports/import_from_multiple/BUILD.out
new file mode 100644
index 0000000..d8219bb
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_from_multiple/BUILD.out
@@ -0,0 +1,12 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "import_from_multiple",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//foo/bar",
+        "//foo/bar:baz",
+    ],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/import_from_multiple/__init__.py b/gazelle/testdata/from_imports/import_from_multiple/__init__.py
new file mode 100644
index 0000000..864059b
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_from_multiple/__init__.py
@@ -0,0 +1,2 @@
+# Import multiple values from the same import.
+from foo.bar import bar, baz
diff --git a/gazelle/testdata/from_imports/import_nested_file/BUILD.in b/gazelle/testdata/from_imports/import_nested_file/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_file/BUILD.in
diff --git a/gazelle/testdata/from_imports/import_nested_file/BUILD.out b/gazelle/testdata/from_imports/import_nested_file/BUILD.out
new file mode 100644
index 0000000..662da9c
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_file/BUILD.out
@@ -0,0 +1,9 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "import_nested_file",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+    deps = ["//foo/bar:baz"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/import_nested_file/__init__.py b/gazelle/testdata/from_imports/import_nested_file/__init__.py
new file mode 100644
index 0000000..d5e6b25
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_file/__init__.py
@@ -0,0 +1,2 @@
+# baz.py is a file at foo/bar/baz.py
+from foo.bar import baz
diff --git a/gazelle/testdata/from_imports/import_nested_module/BUILD.in b/gazelle/testdata/from_imports/import_nested_module/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_module/BUILD.in
diff --git a/gazelle/testdata/from_imports/import_nested_module/BUILD.out b/gazelle/testdata/from_imports/import_nested_module/BUILD.out
new file mode 100644
index 0000000..ec6da50
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_module/BUILD.out
@@ -0,0 +1,9 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "import_nested_module",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+    deps = ["//foo/bar"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/import_nested_module/__init__.py b/gazelle/testdata/from_imports/import_nested_module/__init__.py
new file mode 100644
index 0000000..3b04f00
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_module/__init__.py
@@ -0,0 +1,2 @@
+# bar is a module at foo/bar/__init__.py
+from foo import bar
diff --git a/gazelle/testdata/from_imports/import_nested_var/BUILD.in b/gazelle/testdata/from_imports/import_nested_var/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_var/BUILD.in
diff --git a/gazelle/testdata/from_imports/import_nested_var/BUILD.out b/gazelle/testdata/from_imports/import_nested_var/BUILD.out
new file mode 100644
index 0000000..8ee527e
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_var/BUILD.out
@@ -0,0 +1,9 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "import_nested_var",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+    deps = ["//foo/bar:baz"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/import_nested_var/__init__.py b/gazelle/testdata/from_imports/import_nested_var/__init__.py
new file mode 100644
index 0000000..de5069d
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_nested_var/__init__.py
@@ -0,0 +1,2 @@
+# baz is a variable in foo/bar/baz.py
+from foo.bar.baz import baz
diff --git a/gazelle/testdata/from_imports/import_top_level_var/BUILD.in b/gazelle/testdata/from_imports/import_top_level_var/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_top_level_var/BUILD.in
diff --git a/gazelle/testdata/from_imports/import_top_level_var/BUILD.out b/gazelle/testdata/from_imports/import_top_level_var/BUILD.out
new file mode 100644
index 0000000..6b584d7
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_top_level_var/BUILD.out
@@ -0,0 +1,9 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "import_top_level_var",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+    deps = ["//foo"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/import_top_level_var/__init__.py b/gazelle/testdata/from_imports/import_top_level_var/__init__.py
new file mode 100644
index 0000000..532f11a
--- /dev/null
+++ b/gazelle/testdata/from_imports/import_top_level_var/__init__.py
@@ -0,0 +1,2 @@
+# foo is a variable in foo/__init__.py
+from foo import foo
diff --git a/gazelle/testdata/from_imports/std_module/BUILD.in b/gazelle/testdata/from_imports/std_module/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/from_imports/std_module/BUILD.in
diff --git a/gazelle/testdata/from_imports/std_module/BUILD.out b/gazelle/testdata/from_imports/std_module/BUILD.out
new file mode 100644
index 0000000..4903999
--- /dev/null
+++ b/gazelle/testdata/from_imports/std_module/BUILD.out
@@ -0,0 +1,8 @@
+load("@rules_python//python:defs.bzl", "py_library")
+
+py_library(
+    name = "std_module",
+    srcs = ["__init__.py"],
+    imports = [".."],
+    visibility = ["//:__subpackages__"],
+)
\ No newline at end of file
diff --git a/gazelle/testdata/from_imports/std_module/__init__.py b/gazelle/testdata/from_imports/std_module/__init__.py
new file mode 100644
index 0000000..7e6bc9d
--- /dev/null
+++ b/gazelle/testdata/from_imports/std_module/__init__.py
@@ -0,0 +1,3 @@
+# Gazelle should recognize this from import
+# as the standard module __future__.
+from __future__ import print_function
diff --git a/gazelle/testdata/from_imports/test.yaml b/gazelle/testdata/from_imports/test.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/gazelle/testdata/from_imports/test.yaml
@@ -0,0 +1 @@
+---
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/BUILD.in b/gazelle/testdata/with_third_party_requirements_from_imports/BUILD.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/BUILD.in
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/BUILD.out b/gazelle/testdata/with_third_party_requirements_from_imports/BUILD.out
new file mode 100644
index 0000000..577f167
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/BUILD.out
@@ -0,0 +1,25 @@
+load("@rules_python//python:defs.bzl", "py_binary", "py_library")
+
+py_library(
+    name = "with_third_party_requirements_from_imports",
+    srcs = [
+        "__init__.py",
+        "bar.py",
+    ],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "@gazelle_python_test_google_cloud_aiplatform//:pkg",
+        "@gazelle_python_test_google_cloud_storage//:pkg",
+    ],
+)
+
+py_binary(
+    name = "with_third_party_requirements_from_imports_bin",
+    srcs = ["__main__.py"],
+    main = "__main__.py",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":with_third_party_requirements_from_imports",
+        "@gazelle_python_test_google_cloud_aiplatform//:pkg",
+    ],
+)
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/README.md b/gazelle/testdata/with_third_party_requirements_from_imports/README.md
new file mode 100644
index 0000000..c50a1ca
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/README.md
@@ -0,0 +1,15 @@
+# With third-party requirements (from imports)
+
+This test case covers imports of the form:
+
+```python
+from my_pip_dep import foo
+```
+
+for example
+
+```python
+from google.cloud import aiplatform, storage
+```
+
+See https://github.com/bazelbuild/rules_python/issues/709 and https://github.com/sramirezmartin/gazelle-toy-example.
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/WORKSPACE b/gazelle/testdata/with_third_party_requirements_from_imports/WORKSPACE
new file mode 100644
index 0000000..faff6af
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/WORKSPACE
@@ -0,0 +1 @@
+# This is a Bazel workspace for the Gazelle test data.
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/__init__.py b/gazelle/testdata/with_third_party_requirements_from_imports/__init__.py
new file mode 100644
index 0000000..6b58ff3
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/__init__.py
@@ -0,0 +1 @@
+# For test purposes only.
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/__main__.py b/gazelle/testdata/with_third_party_requirements_from_imports/__main__.py
new file mode 100644
index 0000000..8733018
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/__main__.py
@@ -0,0 +1,7 @@
+from google.cloud import aiplatform
+
+from bar import main
+
+if __name__ == "__main__":
+    print(aiplatform)
+    main()
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/bar.py b/gazelle/testdata/with_third_party_requirements_from_imports/bar.py
new file mode 100644
index 0000000..7875c16
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/bar.py
@@ -0,0 +1,5 @@
+from google.cloud import aiplatform, storage
+
+def main():
+    a = dir(aiplatform)
+    b = dir(storage)
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/gazelle_python.yaml b/gazelle/testdata/with_third_party_requirements_from_imports/gazelle_python.yaml
new file mode 100644
index 0000000..21edbc0
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/gazelle_python.yaml
@@ -0,0 +1,1665 @@
+manifest:
+  modules_mapping:
+    cachetools: cachetools
+    cachetools.__init__: cachetools
+    cachetools.func: cachetools
+    cachetools.keys: cachetools
+    certifi: certifi
+    certifi.__init__: certifi
+    certifi.__main__: certifi
+    certifi.core: certifi
+    charset_normalizer: charset_normalizer
+    charset_normalizer.__init__: charset_normalizer
+    charset_normalizer.api: charset_normalizer
+    charset_normalizer.assets: charset_normalizer
+    charset_normalizer.assets.__init__: charset_normalizer
+    charset_normalizer.cd: charset_normalizer
+    charset_normalizer.cli: charset_normalizer
+    charset_normalizer.cli.__init__: charset_normalizer
+    charset_normalizer.cli.normalizer: charset_normalizer
+    charset_normalizer.constant: charset_normalizer
+    charset_normalizer.legacy: charset_normalizer
+    charset_normalizer.md: charset_normalizer
+    charset_normalizer.models: charset_normalizer
+    charset_normalizer.utils: charset_normalizer
+    charset_normalizer.version: charset_normalizer
+    dateutil: python_dateutil
+    dateutil.__init__: python_dateutil
+    dateutil._common: python_dateutil
+    dateutil._version: python_dateutil
+    dateutil.easter: python_dateutil
+    dateutil.parser: python_dateutil
+    dateutil.parser.__init__: python_dateutil
+    dateutil.parser._parser: python_dateutil
+    dateutil.parser.isoparser: python_dateutil
+    dateutil.relativedelta: python_dateutil
+    dateutil.rrule: python_dateutil
+    dateutil.tz: python_dateutil
+    dateutil.tz.__init__: python_dateutil
+    dateutil.tz._common: python_dateutil
+    dateutil.tz._factories: python_dateutil
+    dateutil.tz.tz: python_dateutil
+    dateutil.tz.win: python_dateutil
+    dateutil.tzwin: python_dateutil
+    dateutil.utils: python_dateutil
+    dateutil.zoneinfo: python_dateutil
+    dateutil.zoneinfo.__init__: python_dateutil
+    dateutil.zoneinfo.rebuild: python_dateutil
+    docs.conf: google_cloud_resource_manager
+    google._async_resumable_media: google_resumable_media
+    google._async_resumable_media.__init__: google_resumable_media
+    google._async_resumable_media._download: google_resumable_media
+    google._async_resumable_media._helpers: google_resumable_media
+    google._async_resumable_media._upload: google_resumable_media
+    google._async_resumable_media.requests: google_resumable_media
+    google._async_resumable_media.requests.__init__: google_resumable_media
+    google._async_resumable_media.requests._request_helpers: google_resumable_media
+    google._async_resumable_media.requests.download: google_resumable_media
+    google._async_resumable_media.requests.upload: google_resumable_media
+    google.api: googleapis_common_protos
+    google.api.__init__: googleapis_common_protos
+    google.api.annotations_pb2: googleapis_common_protos
+    google.api.auth_pb2: googleapis_common_protos
+    google.api.backend_pb2: googleapis_common_protos
+    google.api.billing_pb2: googleapis_common_protos
+    google.api.client_pb2: googleapis_common_protos
+    google.api.config_change_pb2: googleapis_common_protos
+    google.api.consumer_pb2: googleapis_common_protos
+    google.api.context_pb2: googleapis_common_protos
+    google.api.control_pb2: googleapis_common_protos
+    google.api.distribution_pb2: googleapis_common_protos
+    google.api.documentation_pb2: googleapis_common_protos
+    google.api.endpoint_pb2: googleapis_common_protos
+    google.api.error_reason_pb2: googleapis_common_protos
+    google.api.field_behavior_pb2: googleapis_common_protos
+    google.api.http_pb2: googleapis_common_protos
+    google.api.httpbody_pb2: googleapis_common_protos
+    google.api.label_pb2: googleapis_common_protos
+    google.api.launch_stage_pb2: googleapis_common_protos
+    google.api.log_pb2: googleapis_common_protos
+    google.api.logging_pb2: googleapis_common_protos
+    google.api.metric_pb2: googleapis_common_protos
+    google.api.monitored_resource_pb2: googleapis_common_protos
+    google.api.monitoring_pb2: googleapis_common_protos
+    google.api.quota_pb2: googleapis_common_protos
+    google.api.resource_pb2: googleapis_common_protos
+    google.api.routing_pb2: googleapis_common_protos
+    google.api.service_pb2: googleapis_common_protos
+    google.api.source_info_pb2: googleapis_common_protos
+    google.api.system_parameter_pb2: googleapis_common_protos
+    google.api.usage_pb2: googleapis_common_protos
+    google.api.visibility_pb2: googleapis_common_protos
+    google.api_core: google_api_core
+    google.api_core.__init__: google_api_core
+    google.api_core.bidi: google_api_core
+    google.api_core.client_info: google_api_core
+    google.api_core.client_options: google_api_core
+    google.api_core.datetime_helpers: google_api_core
+    google.api_core.exceptions: google_api_core
+    google.api_core.extended_operation: google_api_core
+    google.api_core.future: google_api_core
+    google.api_core.future.__init__: google_api_core
+    google.api_core.future._helpers: google_api_core
+    google.api_core.future.async_future: google_api_core
+    google.api_core.future.base: google_api_core
+    google.api_core.future.polling: google_api_core
+    google.api_core.gapic_v1: google_api_core
+    google.api_core.gapic_v1.__init__: google_api_core
+    google.api_core.gapic_v1.client_info: google_api_core
+    google.api_core.gapic_v1.config: google_api_core
+    google.api_core.gapic_v1.config_async: google_api_core
+    google.api_core.gapic_v1.method: google_api_core
+    google.api_core.gapic_v1.method_async: google_api_core
+    google.api_core.gapic_v1.routing_header: google_api_core
+    google.api_core.general_helpers: google_api_core
+    google.api_core.grpc_helpers: google_api_core
+    google.api_core.grpc_helpers_async: google_api_core
+    google.api_core.iam: google_api_core
+    google.api_core.operation: google_api_core
+    google.api_core.operation_async: google_api_core
+    google.api_core.operations_v1: google_api_core
+    google.api_core.operations_v1.__init__: google_api_core
+    google.api_core.operations_v1.abstract_operations_client: google_api_core
+    google.api_core.operations_v1.operations_async_client: google_api_core
+    google.api_core.operations_v1.operations_client: google_api_core
+    google.api_core.operations_v1.operations_client_config: google_api_core
+    google.api_core.operations_v1.pagers: google_api_core
+    google.api_core.operations_v1.transports: google_api_core
+    google.api_core.operations_v1.transports.__init__: google_api_core
+    google.api_core.operations_v1.transports.base: google_api_core
+    google.api_core.operations_v1.transports.rest: google_api_core
+    google.api_core.page_iterator: google_api_core
+    google.api_core.page_iterator_async: google_api_core
+    google.api_core.path_template: google_api_core
+    google.api_core.protobuf_helpers: google_api_core
+    google.api_core.rest_helpers: google_api_core
+    google.api_core.rest_streaming: google_api_core
+    google.api_core.retry: google_api_core
+    google.api_core.retry_async: google_api_core
+    google.api_core.timeout: google_api_core
+    google.api_core.version: google_api_core
+    google.auth: google_auth
+    google.auth.__init__: google_auth
+    google.auth._cloud_sdk: google_auth
+    google.auth._credentials_async: google_auth
+    google.auth._default: google_auth
+    google.auth._default_async: google_auth
+    google.auth._helpers: google_auth
+    google.auth._jwt_async: google_auth
+    google.auth._oauth2client: google_auth
+    google.auth._service_account_info: google_auth
+    google.auth.app_engine: google_auth
+    google.auth.aws: google_auth
+    google.auth.compute_engine: google_auth
+    google.auth.compute_engine.__init__: google_auth
+    google.auth.compute_engine._metadata: google_auth
+    google.auth.compute_engine.credentials: google_auth
+    google.auth.credentials: google_auth
+    google.auth.crypt: google_auth
+    google.auth.crypt.__init__: google_auth
+    google.auth.crypt._cryptography_rsa: google_auth
+    google.auth.crypt._helpers: google_auth
+    google.auth.crypt._python_rsa: google_auth
+    google.auth.crypt.base: google_auth
+    google.auth.crypt.es256: google_auth
+    google.auth.crypt.rsa: google_auth
+    google.auth.downscoped: google_auth
+    google.auth.environment_vars: google_auth
+    google.auth.exceptions: google_auth
+    google.auth.external_account: google_auth
+    google.auth.iam: google_auth
+    google.auth.identity_pool: google_auth
+    google.auth.impersonated_credentials: google_auth
+    google.auth.jwt: google_auth
+    google.auth.transport: google_auth
+    google.auth.transport.__init__: google_auth
+    google.auth.transport._aiohttp_requests: google_auth
+    google.auth.transport._http_client: google_auth
+    google.auth.transport._mtls_helper: google_auth
+    google.auth.transport.grpc: google_auth
+    google.auth.transport.mtls: google_auth
+    google.auth.transport.requests: google_auth
+    google.auth.transport.urllib3: google_auth
+    google.auth.version: google_auth
+    google.cloud._helpers: google_cloud_core
+    google.cloud._helpers.__init__: google_cloud_core
+    google.cloud._http: google_cloud_core
+    google.cloud._http.__init__: google_cloud_core
+    google.cloud._testing: google_cloud_core
+    google.cloud._testing.__init__: google_cloud_core
+    google.cloud.aiplatform: google_cloud_aiplatform
+    google.cloud.aiplatform.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine.match_service_pb2: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine.match_service_pb2_grpc: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine.matching_engine_index: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine.matching_engine_index_config: google_cloud_aiplatform
+    google.cloud.aiplatform._matching_engine.matching_engine_index_endpoint: google_cloud_aiplatform
+    google.cloud.aiplatform.base: google_cloud_aiplatform
+    google.cloud.aiplatform.compat: google_cloud_aiplatform
+    google.cloud.aiplatform.compat.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.compat.services: google_cloud_aiplatform
+    google.cloud.aiplatform.compat.services.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.compat.types: google_cloud_aiplatform
+    google.cloud.aiplatform.compat.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.constants: google_cloud_aiplatform
+    google.cloud.aiplatform.constants.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.constants.base: google_cloud_aiplatform
+    google.cloud.aiplatform.constants.prediction: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets._datasources: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.column_names_dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.image_dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.tabular_dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.text_dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.time_series_dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.datasets.video_dataset: google_cloud_aiplatform
+    google.cloud.aiplatform.explain: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.lit: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.metadata_builder: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.v1: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.v1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.v1.saved_model_metadata_builder: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.v2: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.v2.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.explain.metadata.tf.v2.saved_model_metadata_builder: google_cloud_aiplatform
+    google.cloud.aiplatform.featurestore: google_cloud_aiplatform
+    google.cloud.aiplatform.featurestore.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.featurestore.entity_type: google_cloud_aiplatform
+    google.cloud.aiplatform.featurestore.feature: google_cloud_aiplatform
+    google.cloud.aiplatform.featurestore.featurestore: google_cloud_aiplatform
+    google.cloud.aiplatform.gapic: google_cloud_aiplatform
+    google.cloud.aiplatform.gapic.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.gapic.schema: google_cloud_aiplatform
+    google.cloud.aiplatform.gapic.schema.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.helpers: google_cloud_aiplatform
+    google.cloud.aiplatform.helpers.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.helpers.container_uri_builders: google_cloud_aiplatform
+    google.cloud.aiplatform.hyperparameter_tuning: google_cloud_aiplatform
+    google.cloud.aiplatform.initializer: google_cloud_aiplatform
+    google.cloud.aiplatform.jobs: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.artifact: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.constants: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.context: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.execution: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.metadata: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.metadata_store: google_cloud_aiplatform
+    google.cloud.aiplatform.metadata.resource: google_cloud_aiplatform
+    google.cloud.aiplatform.model_evaluation: google_cloud_aiplatform
+    google.cloud.aiplatform.model_evaluation.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.model_evaluation.model_evaluation: google_cloud_aiplatform
+    google.cloud.aiplatform.models: google_cloud_aiplatform
+    google.cloud.aiplatform.pipeline_jobs: google_cloud_aiplatform
+    google.cloud.aiplatform.schema: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard.plugins.tf_profiler.profile_uploader: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard.tensorboard_resource: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard.uploader: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard.uploader_main: google_cloud_aiplatform
+    google.cloud.aiplatform.tensorboard.uploader_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.training_jobs: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.cloud_profiler_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.initializer: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.plugins.base_plugin: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.plugins.tensorflow.tensorboard_api: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.plugins.tensorflow.tf_profiler: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.webserver: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.cloud_profiler.wsgi_types: google_cloud_aiplatform
+    google.cloud.aiplatform.training_utils.environment_variables: google_cloud_aiplatform
+    google.cloud.aiplatform.utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.column_transformations_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.console_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.enhanced_library: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.enhanced_library.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.enhanced_library._decorators: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.enhanced_library.value_converter: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.featurestore_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.gcs_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.pipeline_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.resource_manager_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.source_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.tensorboard_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.worker_spec_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.utils.yaml_utils: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.image_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.text_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.text_extraction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.text_sentiment: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.instance_v1.types.video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.image_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.params_v1.types.video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.tabular_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.tabular_regression: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.text_extraction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.text_sentiment: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.predict.prediction_v1.types.video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_image_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_tables: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_text_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_text_extraction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_text_sentiment: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.automl_video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1.schema.trainingjob.definition_v1.types.export_evaluated_data_items_config: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.image_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.text_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.text_extraction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.text_sentiment: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.instance_v1beta1.types.video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.image_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.params_v1beta1.types.video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.tabular_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.tabular_regression: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.text_extraction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.text_sentiment: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.time_series_forecasting: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.predict.prediction_v1beta1.types.video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_forecasting: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_image_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_image_object_detection: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_image_segmentation: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_tables: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_text_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_text_extraction: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_text_sentiment: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_time_series_forecasting: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_video_action_recognition: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_video_classification: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.automl_video_object_tracking: google_cloud_aiplatform
+    google.cloud.aiplatform.v1beta1.schema.trainingjob.definition_v1beta1.types.export_evaluated_data_items_config: google_cloud_aiplatform
+    google.cloud.aiplatform.version: google_cloud_aiplatform
+    google.cloud.aiplatform_v1: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.dataset_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.endpoint_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_online_serving_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.featurestore_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_endpoint_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.index_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.job_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.metadata_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.migration_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.model_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.pipeline_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.prediction_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.specialist_pool_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.tensorboard_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.services.vizier_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.accelerator_type: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.annotation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.annotation_spec: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.artifact: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.batch_prediction_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.completion_stats: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.context: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.custom_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.data_item: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.data_labeling_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.dataset: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.dataset_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.deployed_index_ref: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.deployed_model_ref: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.encryption_spec: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.endpoint: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.entity_type: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.env_var: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.event: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.execution: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.explanation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.explanation_metadata: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.feature: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.feature_monitoring_stats: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.feature_selector: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.featurestore: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.featurestore_monitoring: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.featurestore_online_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.featurestore_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.hyperparameter_tuning_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.index: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.index_endpoint: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.index_endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.index_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.io: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.job_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.job_state: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.lineage_subgraph: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.machine_resources: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.manual_batch_tuning_parameters: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.metadata_schema: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.metadata_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.metadata_store: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.migratable_resource: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.migration_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.model: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.model_deployment_monitoring_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.model_evaluation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.model_evaluation_slice: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.model_monitoring: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.model_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.operation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.pipeline_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.pipeline_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.pipeline_state: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.prediction_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.specialist_pool: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.specialist_pool_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.study: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.tensorboard: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.tensorboard_data: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.tensorboard_experiment: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.tensorboard_run: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.tensorboard_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.tensorboard_time_series: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.training_pipeline: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.types: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.unmanaged_container_model: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.user_action_reference: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.value: google_cloud_aiplatform
+    google.cloud.aiplatform_v1.types.vizier_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.dataset_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.endpoint_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_online_serving_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.featurestore_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_endpoint_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.index_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.job_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.metadata_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.migration_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.model_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.pipeline_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.prediction_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.specialist_pool_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.tensorboard_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.async_client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.client: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.pagers: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.transports: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.transports.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.transports.base: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.transports.grpc: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.services.vizier_service.transports.grpc_asyncio: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.__init__: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.accelerator_type: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.annotation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.annotation_spec: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.artifact: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.batch_prediction_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.completion_stats: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.context: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.custom_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.data_item: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.data_labeling_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.dataset: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.dataset_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.deployed_index_ref: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.deployed_model_ref: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.encryption_spec: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.endpoint: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.entity_type: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.env_var: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.event: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.execution: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.explanation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.explanation_metadata: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.feature: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.feature_monitoring_stats: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.feature_selector: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.featurestore: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.featurestore_monitoring: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.featurestore_online_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.featurestore_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.hyperparameter_tuning_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.index: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.index_endpoint: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.index_endpoint_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.index_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.io: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.job_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.job_state: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.lineage_subgraph: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.machine_resources: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.manual_batch_tuning_parameters: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.metadata_schema: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.metadata_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.metadata_store: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.migratable_resource: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.migration_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.model: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.model_deployment_monitoring_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.model_evaluation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.model_evaluation_slice: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.model_monitoring: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.model_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.operation: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.pipeline_job: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.pipeline_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.pipeline_state: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.prediction_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.specialist_pool: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.specialist_pool_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.study: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.tensorboard: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.tensorboard_data: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.tensorboard_experiment: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.tensorboard_run: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.tensorboard_service: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.tensorboard_time_series: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.training_pipeline: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.types: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.unmanaged_container_model: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.user_action_reference: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.value: google_cloud_aiplatform
+    google.cloud.aiplatform_v1beta1.types.vizier_service: google_cloud_aiplatform
+    google.cloud.bigquery: google_cloud_bigquery
+    google.cloud.bigquery.__init__: google_cloud_bigquery
+    google.cloud.bigquery._helpers: google_cloud_bigquery
+    google.cloud.bigquery._http: google_cloud_bigquery
+    google.cloud.bigquery._pandas_helpers: google_cloud_bigquery
+    google.cloud.bigquery._tqdm_helpers: google_cloud_bigquery
+    google.cloud.bigquery.client: google_cloud_bigquery
+    google.cloud.bigquery.dataset: google_cloud_bigquery
+    google.cloud.bigquery.dbapi: google_cloud_bigquery
+    google.cloud.bigquery.dbapi.__init__: google_cloud_bigquery
+    google.cloud.bigquery.dbapi._helpers: google_cloud_bigquery
+    google.cloud.bigquery.dbapi.connection: google_cloud_bigquery
+    google.cloud.bigquery.dbapi.cursor: google_cloud_bigquery
+    google.cloud.bigquery.dbapi.exceptions: google_cloud_bigquery
+    google.cloud.bigquery.dbapi.types: google_cloud_bigquery
+    google.cloud.bigquery.encryption_configuration: google_cloud_bigquery
+    google.cloud.bigquery.enums: google_cloud_bigquery
+    google.cloud.bigquery.exceptions: google_cloud_bigquery
+    google.cloud.bigquery.external_config: google_cloud_bigquery
+    google.cloud.bigquery.format_options: google_cloud_bigquery
+    google.cloud.bigquery.iam: google_cloud_bigquery
+    google.cloud.bigquery.job: google_cloud_bigquery
+    google.cloud.bigquery.job.__init__: google_cloud_bigquery
+    google.cloud.bigquery.job.base: google_cloud_bigquery
+    google.cloud.bigquery.job.copy_: google_cloud_bigquery
+    google.cloud.bigquery.job.extract: google_cloud_bigquery
+    google.cloud.bigquery.job.load: google_cloud_bigquery
+    google.cloud.bigquery.job.query: google_cloud_bigquery
+    google.cloud.bigquery.magics: google_cloud_bigquery
+    google.cloud.bigquery.magics.__init__: google_cloud_bigquery
+    google.cloud.bigquery.magics.line_arg_parser: google_cloud_bigquery
+    google.cloud.bigquery.magics.line_arg_parser.__init__: google_cloud_bigquery
+    google.cloud.bigquery.magics.line_arg_parser.exceptions: google_cloud_bigquery
+    google.cloud.bigquery.magics.line_arg_parser.lexer: google_cloud_bigquery
+    google.cloud.bigquery.magics.line_arg_parser.parser: google_cloud_bigquery
+    google.cloud.bigquery.magics.line_arg_parser.visitors: google_cloud_bigquery
+    google.cloud.bigquery.magics.magics: google_cloud_bigquery
+    google.cloud.bigquery.model: google_cloud_bigquery
+    google.cloud.bigquery.opentelemetry_tracing: google_cloud_bigquery
+    google.cloud.bigquery.query: google_cloud_bigquery
+    google.cloud.bigquery.retry: google_cloud_bigquery
+    google.cloud.bigquery.routine: google_cloud_bigquery
+    google.cloud.bigquery.routine.__init__: google_cloud_bigquery
+    google.cloud.bigquery.routine.routine: google_cloud_bigquery
+    google.cloud.bigquery.schema: google_cloud_bigquery
+    google.cloud.bigquery.table: google_cloud_bigquery
+    google.cloud.bigquery.version: google_cloud_bigquery
+    google.cloud.bigquery_v2: google_cloud_bigquery
+    google.cloud.bigquery_v2.__init__: google_cloud_bigquery
+    google.cloud.bigquery_v2.types: google_cloud_bigquery
+    google.cloud.bigquery_v2.types.__init__: google_cloud_bigquery
+    google.cloud.bigquery_v2.types.encryption_config: google_cloud_bigquery
+    google.cloud.bigquery_v2.types.model: google_cloud_bigquery
+    google.cloud.bigquery_v2.types.model_reference: google_cloud_bigquery
+    google.cloud.bigquery_v2.types.standard_sql: google_cloud_bigquery
+    google.cloud.bigquery_v2.types.table_reference: google_cloud_bigquery
+    google.cloud.client: google_cloud_core
+    google.cloud.client.__init__: google_cloud_core
+    google.cloud.environment_vars: google_cloud_core
+    google.cloud.environment_vars.__init__: google_cloud_core
+    google.cloud.exceptions: google_cloud_core
+    google.cloud.exceptions.__init__: google_cloud_core
+    google.cloud.extended_operations_pb2: googleapis_common_protos
+    google.cloud.location.locations_pb2: googleapis_common_protos
+    google.cloud.obsolete: google_cloud_core
+    google.cloud.obsolete.__init__: google_cloud_core
+    google.cloud.operation: google_cloud_core
+    google.cloud.operation.__init__: google_cloud_core
+    google.cloud.resourcemanager: google_cloud_resource_manager
+    google.cloud.resourcemanager.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.async_client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.pagers: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.transports: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.transports.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.transports.base: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.transports.grpc: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.folders.transports.grpc_asyncio: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.async_client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.pagers: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.transports: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.transports.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.transports.base: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.transports.grpc: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.organizations.transports.grpc_asyncio: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.async_client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.pagers: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.transports: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.transports.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.transports.base: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.transports.grpc: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.projects.transports.grpc_asyncio: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.async_client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.pagers: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.transports: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.transports.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.transports.base: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.transports.grpc: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_bindings.transports.grpc_asyncio: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.async_client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.pagers: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.transports: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.transports.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.transports.base: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.transports.grpc: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_keys.transports.grpc_asyncio: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.async_client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.client: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.pagers: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.transports: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.transports.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.transports.base: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.transports.grpc: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.services.tag_values.transports.grpc_asyncio: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.__init__: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.folders: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.organizations: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.projects: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.tag_bindings: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.tag_keys: google_cloud_resource_manager
+    google.cloud.resourcemanager_v3.types.tag_values: google_cloud_resource_manager
+    google.cloud.storage: google_cloud_storage
+    google.cloud.storage.__init__: google_cloud_storage
+    google.cloud.storage._helpers: google_cloud_storage
+    google.cloud.storage._http: google_cloud_storage
+    google.cloud.storage._signing: google_cloud_storage
+    google.cloud.storage.acl: google_cloud_storage
+    google.cloud.storage.batch: google_cloud_storage
+    google.cloud.storage.blob: google_cloud_storage
+    google.cloud.storage.bucket: google_cloud_storage
+    google.cloud.storage.client: google_cloud_storage
+    google.cloud.storage.constants: google_cloud_storage
+    google.cloud.storage.fileio: google_cloud_storage
+    google.cloud.storage.hmac_key: google_cloud_storage
+    google.cloud.storage.iam: google_cloud_storage
+    google.cloud.storage.notification: google_cloud_storage
+    google.cloud.storage.retry: google_cloud_storage
+    google.cloud.storage.version: google_cloud_storage
+    google.cloud.version: google_cloud_core
+    google.gapic.metadata: googleapis_common_protos
+    google.gapic.metadata.__init__: googleapis_common_protos
+    google.gapic.metadata.gapic_metadata_pb2: googleapis_common_protos
+    google.iam.v1: grpc_google_iam_v1
+    google.iam.v1.__init__: grpc_google_iam_v1
+    google.iam.v1.iam_policy_pb2: grpc_google_iam_v1
+    google.iam.v1.iam_policy_pb2_grpc: grpc_google_iam_v1
+    google.iam.v1.logging: grpc_google_iam_v1
+    google.iam.v1.logging.__init__: grpc_google_iam_v1
+    google.iam.v1.logging.audit_data_pb2: grpc_google_iam_v1
+    google.iam.v1.options_pb2: grpc_google_iam_v1
+    google.iam.v1.options_pb2_grpc: grpc_google_iam_v1
+    google.iam.v1.policy_pb2: grpc_google_iam_v1
+    google.iam.v1.policy_pb2_grpc: grpc_google_iam_v1
+    google.logging.type: googleapis_common_protos
+    google.logging.type.__init__: googleapis_common_protos
+    google.logging.type.http_request_pb2: googleapis_common_protos
+    google.logging.type.log_severity_pb2: googleapis_common_protos
+    google.longrunning: googleapis_common_protos
+    google.longrunning.__init__: googleapis_common_protos
+    google.longrunning.operations_grpc: googleapis_common_protos
+    google.longrunning.operations_grpc_pb2: googleapis_common_protos
+    google.longrunning.operations_pb2: googleapis_common_protos
+    google.longrunning.operations_pb2_grpc: googleapis_common_protos
+    google.longrunning.operations_proto: googleapis_common_protos
+    google.longrunning.operations_proto_pb2: googleapis_common_protos
+    google.oauth2: google_auth
+    google.oauth2.__init__: google_auth
+    google.oauth2._client: google_auth
+    google.oauth2._client_async: google_auth
+    google.oauth2._credentials_async: google_auth
+    google.oauth2._id_token_async: google_auth
+    google.oauth2._reauth_async: google_auth
+    google.oauth2._service_account_async: google_auth
+    google.oauth2.challenges: google_auth
+    google.oauth2.credentials: google_auth
+    google.oauth2.id_token: google_auth
+    google.oauth2.reauth: google_auth
+    google.oauth2.service_account: google_auth
+    google.oauth2.sts: google_auth
+    google.oauth2.utils: google_auth
+    google.protobuf: protobuf
+    google.protobuf.__init__: protobuf
+    google.protobuf.any_pb2: protobuf
+    google.protobuf.api_pb2: protobuf
+    google.protobuf.compiler: protobuf
+    google.protobuf.compiler.__init__: protobuf
+    google.protobuf.compiler.plugin_pb2: protobuf
+    google.protobuf.descriptor: protobuf
+    google.protobuf.descriptor_database: protobuf
+    google.protobuf.descriptor_pb2: protobuf
+    google.protobuf.descriptor_pool: protobuf
+    google.protobuf.duration_pb2: protobuf
+    google.protobuf.empty_pb2: protobuf
+    google.protobuf.field_mask_pb2: protobuf
+    google.protobuf.internal: protobuf
+    google.protobuf.internal.__init__: protobuf
+    google.protobuf.internal._api_implementation: protobuf
+    google.protobuf.internal.api_implementation: protobuf
+    google.protobuf.internal.builder: protobuf
+    google.protobuf.internal.containers: protobuf
+    google.protobuf.internal.decoder: protobuf
+    google.protobuf.internal.encoder: protobuf
+    google.protobuf.internal.enum_type_wrapper: protobuf
+    google.protobuf.internal.extension_dict: protobuf
+    google.protobuf.internal.message_listener: protobuf
+    google.protobuf.internal.python_message: protobuf
+    google.protobuf.internal.type_checkers: protobuf
+    google.protobuf.internal.well_known_types: protobuf
+    google.protobuf.internal.wire_format: protobuf
+    google.protobuf.json_format: protobuf
+    google.protobuf.message: protobuf
+    google.protobuf.message_factory: protobuf
+    google.protobuf.proto_builder: protobuf
+    google.protobuf.pyext: protobuf
+    google.protobuf.pyext.__init__: protobuf
+    google.protobuf.pyext._message: protobuf
+    google.protobuf.pyext.cpp_message: protobuf
+    google.protobuf.reflection: protobuf
+    google.protobuf.service: protobuf
+    google.protobuf.service_reflection: protobuf
+    google.protobuf.source_context_pb2: protobuf
+    google.protobuf.struct_pb2: protobuf
+    google.protobuf.symbol_database: protobuf
+    google.protobuf.text_encoding: protobuf
+    google.protobuf.text_format: protobuf
+    google.protobuf.timestamp_pb2: protobuf
+    google.protobuf.type_pb2: protobuf
+    google.protobuf.util: protobuf
+    google.protobuf.util.__init__: protobuf
+    google.protobuf.util.json_format_pb2: protobuf
+    google.protobuf.util.json_format_proto3_pb2: protobuf
+    google.protobuf.wrappers_pb2: protobuf
+    google.resumable_media: google_resumable_media
+    google.resumable_media.__init__: google_resumable_media
+    google.resumable_media._download: google_resumable_media
+    google.resumable_media._helpers: google_resumable_media
+    google.resumable_media._upload: google_resumable_media
+    google.resumable_media.common: google_resumable_media
+    google.resumable_media.requests: google_resumable_media
+    google.resumable_media.requests.__init__: google_resumable_media
+    google.resumable_media.requests._request_helpers: google_resumable_media
+    google.resumable_media.requests.download: google_resumable_media
+    google.resumable_media.requests.upload: google_resumable_media
+    google.rpc: googleapis_common_protos
+    google.rpc.__init__: googleapis_common_protos
+    google.rpc.code_pb2: googleapis_common_protos
+    google.rpc.context: googleapis_common_protos
+    google.rpc.context.__init__: googleapis_common_protos
+    google.rpc.context.attribute_context_pb2: googleapis_common_protos
+    google.rpc.error_details_pb2: googleapis_common_protos
+    google.rpc.status_pb2: googleapis_common_protos
+    google.type: googleapis_common_protos
+    google.type.__init__: googleapis_common_protos
+    google.type.calendar_period_pb2: googleapis_common_protos
+    google.type.color_pb2: googleapis_common_protos
+    google.type.date_pb2: googleapis_common_protos
+    google.type.datetime_pb2: googleapis_common_protos
+    google.type.dayofweek_pb2: googleapis_common_protos
+    google.type.decimal_pb2: googleapis_common_protos
+    google.type.expr_pb2: googleapis_common_protos
+    google.type.fraction_pb2: googleapis_common_protos
+    google.type.interval_pb2: googleapis_common_protos
+    google.type.latlng_pb2: googleapis_common_protos
+    google.type.localized_text_pb2: googleapis_common_protos
+    google.type.money_pb2: googleapis_common_protos
+    google.type.month_pb2: googleapis_common_protos
+    google.type.phone_number_pb2: googleapis_common_protos
+    google.type.postal_address_pb2: googleapis_common_protos
+    google.type.quaternion_pb2: googleapis_common_protos
+    google.type.timeofday_pb2: googleapis_common_protos
+    google_crc32c: google_crc32c
+    google_crc32c.__config__: google_crc32c
+    google_crc32c.__init__: google_crc32c
+    google_crc32c._checksum: google_crc32c
+    google_crc32c._crc32c: google_crc32c
+    google_crc32c.cext: google_crc32c
+    google_crc32c.libs.libcrc32c-672e1704: google_crc32c
+    google_crc32c.python: google_crc32c
+    grpc: grpcio
+    grpc.__init__: grpcio
+    grpc._auth: grpcio
+    grpc._channel: grpcio
+    grpc._common: grpcio
+    grpc._compression: grpcio
+    grpc._cython: grpcio
+    grpc._cython.__init__: grpcio
+    grpc._cython._cygrpc: grpcio
+    grpc._cython._cygrpc.__init__: grpcio
+    grpc._cython.cygrpc: grpcio
+    grpc._grpcio_metadata: grpcio
+    grpc._interceptor: grpcio
+    grpc._plugin_wrapping: grpcio
+    grpc._runtime_protos: grpcio
+    grpc._server: grpcio
+    grpc._simple_stubs: grpcio
+    grpc._utilities: grpcio
+    grpc.aio: grpcio
+    grpc.aio.__init__: grpcio
+    grpc.aio._base_call: grpcio
+    grpc.aio._base_channel: grpcio
+    grpc.aio._base_server: grpcio
+    grpc.aio._call: grpcio
+    grpc.aio._channel: grpcio
+    grpc.aio._interceptor: grpcio
+    grpc.aio._metadata: grpcio
+    grpc.aio._server: grpcio
+    grpc.aio._typing: grpcio
+    grpc.aio._utils: grpcio
+    grpc.beta: grpcio
+    grpc.beta.__init__: grpcio
+    grpc.beta._client_adaptations: grpcio
+    grpc.beta._metadata: grpcio
+    grpc.beta._server_adaptations: grpcio
+    grpc.beta.implementations: grpcio
+    grpc.beta.interfaces: grpcio
+    grpc.beta.utilities: grpcio
+    grpc.experimental: grpcio
+    grpc.experimental.__init__: grpcio
+    grpc.experimental.aio: grpcio
+    grpc.experimental.aio.__init__: grpcio
+    grpc.experimental.gevent: grpcio
+    grpc.experimental.session_cache: grpcio
+    grpc.framework: grpcio
+    grpc.framework.__init__: grpcio
+    grpc.framework.common: grpcio
+    grpc.framework.common.__init__: grpcio
+    grpc.framework.common.cardinality: grpcio
+    grpc.framework.common.style: grpcio
+    grpc.framework.foundation: grpcio
+    grpc.framework.foundation.__init__: grpcio
+    grpc.framework.foundation.abandonment: grpcio
+    grpc.framework.foundation.callable_util: grpcio
+    grpc.framework.foundation.future: grpcio
+    grpc.framework.foundation.logging_pool: grpcio
+    grpc.framework.foundation.stream: grpcio
+    grpc.framework.foundation.stream_util: grpcio
+    grpc.framework.interfaces: grpcio
+    grpc.framework.interfaces.__init__: grpcio
+    grpc.framework.interfaces.base: grpcio
+    grpc.framework.interfaces.base.__init__: grpcio
+    grpc.framework.interfaces.base.base: grpcio
+    grpc.framework.interfaces.base.utilities: grpcio
+    grpc.framework.interfaces.face: grpcio
+    grpc.framework.interfaces.face.__init__: grpcio
+    grpc.framework.interfaces.face.face: grpcio
+    grpc.framework.interfaces.face.utilities: grpcio
+    grpc_status: grpcio_status
+    grpc_status.__init__: grpcio_status
+    grpc_status._async: grpcio_status
+    grpc_status._common: grpcio_status
+    grpc_status.rpc_status: grpcio_status
+    idna: idna
+    idna.__init__: idna
+    idna.codec: idna
+    idna.compat: idna
+    idna.core: idna
+    idna.idnadata: idna
+    idna.intranges: idna
+    idna.package_data: idna
+    idna.uts46data: idna
+    packaging: packaging
+    packaging.__about__: packaging
+    packaging.__init__: packaging
+    packaging._manylinux: packaging
+    packaging._musllinux: packaging
+    packaging._structures: packaging
+    packaging.markers: packaging
+    packaging.requirements: packaging
+    packaging.specifiers: packaging
+    packaging.tags: packaging
+    packaging.utils: packaging
+    packaging.version: packaging
+    proto: proto_plus
+    proto.__init__: proto_plus
+    proto._file_info: proto_plus
+    proto._package_info: proto_plus
+    proto.datetime_helpers: proto_plus
+    proto.enums: proto_plus
+    proto.fields: proto_plus
+    proto.marshal: proto_plus
+    proto.marshal.__init__: proto_plus
+    proto.marshal.collections: proto_plus
+    proto.marshal.collections.__init__: proto_plus
+    proto.marshal.collections.maps: proto_plus
+    proto.marshal.collections.repeated: proto_plus
+    proto.marshal.compat: proto_plus
+    proto.marshal.marshal: proto_plus
+    proto.marshal.rules: proto_plus
+    proto.marshal.rules.__init__: proto_plus
+    proto.marshal.rules.bytes: proto_plus
+    proto.marshal.rules.dates: proto_plus
+    proto.marshal.rules.enums: proto_plus
+    proto.marshal.rules.message: proto_plus
+    proto.marshal.rules.stringy_numbers: proto_plus
+    proto.marshal.rules.struct: proto_plus
+    proto.marshal.rules.wrappers: proto_plus
+    proto.message: proto_plus
+    proto.modules: proto_plus
+    proto.primitives: proto_plus
+    proto.utils: proto_plus
+    pyasn1: pyasn1
+    pyasn1.__init__: pyasn1
+    pyasn1.codec: pyasn1
+    pyasn1.codec.__init__: pyasn1
+    pyasn1.codec.ber: pyasn1
+    pyasn1.codec.ber.__init__: pyasn1
+    pyasn1.codec.ber.decoder: pyasn1
+    pyasn1.codec.ber.encoder: pyasn1
+    pyasn1.codec.ber.eoo: pyasn1
+    pyasn1.codec.cer: pyasn1
+    pyasn1.codec.cer.__init__: pyasn1
+    pyasn1.codec.cer.decoder: pyasn1
+    pyasn1.codec.cer.encoder: pyasn1
+    pyasn1.codec.der: pyasn1
+    pyasn1.codec.der.__init__: pyasn1
+    pyasn1.codec.der.decoder: pyasn1
+    pyasn1.codec.der.encoder: pyasn1
+    pyasn1.codec.native: pyasn1
+    pyasn1.codec.native.__init__: pyasn1
+    pyasn1.codec.native.decoder: pyasn1
+    pyasn1.codec.native.encoder: pyasn1
+    pyasn1.compat: pyasn1
+    pyasn1.compat.__init__: pyasn1
+    pyasn1.compat.binary: pyasn1
+    pyasn1.compat.calling: pyasn1
+    pyasn1.compat.dateandtime: pyasn1
+    pyasn1.compat.integer: pyasn1
+    pyasn1.compat.octets: pyasn1
+    pyasn1.compat.string: pyasn1
+    pyasn1.debug: pyasn1
+    pyasn1.error: pyasn1
+    pyasn1.type: pyasn1
+    pyasn1.type.__init__: pyasn1
+    pyasn1.type.base: pyasn1
+    pyasn1.type.char: pyasn1
+    pyasn1.type.constraint: pyasn1
+    pyasn1.type.error: pyasn1
+    pyasn1.type.namedtype: pyasn1
+    pyasn1.type.namedval: pyasn1
+    pyasn1.type.opentype: pyasn1
+    pyasn1.type.tag: pyasn1
+    pyasn1.type.tagmap: pyasn1
+    pyasn1.type.univ: pyasn1
+    pyasn1.type.useful: pyasn1
+    pyasn1_modules: pyasn1_modules
+    pyasn1_modules.__init__: pyasn1_modules
+    pyasn1_modules.pem: pyasn1_modules
+    pyasn1_modules.rfc1155: pyasn1_modules
+    pyasn1_modules.rfc1157: pyasn1_modules
+    pyasn1_modules.rfc1901: pyasn1_modules
+    pyasn1_modules.rfc1902: pyasn1_modules
+    pyasn1_modules.rfc1905: pyasn1_modules
+    pyasn1_modules.rfc2251: pyasn1_modules
+    pyasn1_modules.rfc2314: pyasn1_modules
+    pyasn1_modules.rfc2315: pyasn1_modules
+    pyasn1_modules.rfc2437: pyasn1_modules
+    pyasn1_modules.rfc2459: pyasn1_modules
+    pyasn1_modules.rfc2511: pyasn1_modules
+    pyasn1_modules.rfc2560: pyasn1_modules
+    pyasn1_modules.rfc2631: pyasn1_modules
+    pyasn1_modules.rfc2634: pyasn1_modules
+    pyasn1_modules.rfc2985: pyasn1_modules
+    pyasn1_modules.rfc2986: pyasn1_modules
+    pyasn1_modules.rfc3114: pyasn1_modules
+    pyasn1_modules.rfc3161: pyasn1_modules
+    pyasn1_modules.rfc3274: pyasn1_modules
+    pyasn1_modules.rfc3279: pyasn1_modules
+    pyasn1_modules.rfc3280: pyasn1_modules
+    pyasn1_modules.rfc3281: pyasn1_modules
+    pyasn1_modules.rfc3412: pyasn1_modules
+    pyasn1_modules.rfc3414: pyasn1_modules
+    pyasn1_modules.rfc3447: pyasn1_modules
+    pyasn1_modules.rfc3560: pyasn1_modules
+    pyasn1_modules.rfc3565: pyasn1_modules
+    pyasn1_modules.rfc3709: pyasn1_modules
+    pyasn1_modules.rfc3770: pyasn1_modules
+    pyasn1_modules.rfc3779: pyasn1_modules
+    pyasn1_modules.rfc3852: pyasn1_modules
+    pyasn1_modules.rfc4043: pyasn1_modules
+    pyasn1_modules.rfc4055: pyasn1_modules
+    pyasn1_modules.rfc4073: pyasn1_modules
+    pyasn1_modules.rfc4108: pyasn1_modules
+    pyasn1_modules.rfc4210: pyasn1_modules
+    pyasn1_modules.rfc4211: pyasn1_modules
+    pyasn1_modules.rfc4334: pyasn1_modules
+    pyasn1_modules.rfc4985: pyasn1_modules
+    pyasn1_modules.rfc5035: pyasn1_modules
+    pyasn1_modules.rfc5083: pyasn1_modules
+    pyasn1_modules.rfc5084: pyasn1_modules
+    pyasn1_modules.rfc5208: pyasn1_modules
+    pyasn1_modules.rfc5280: pyasn1_modules
+    pyasn1_modules.rfc5480: pyasn1_modules
+    pyasn1_modules.rfc5649: pyasn1_modules
+    pyasn1_modules.rfc5652: pyasn1_modules
+    pyasn1_modules.rfc5751: pyasn1_modules
+    pyasn1_modules.rfc5755: pyasn1_modules
+    pyasn1_modules.rfc5913: pyasn1_modules
+    pyasn1_modules.rfc5914: pyasn1_modules
+    pyasn1_modules.rfc5915: pyasn1_modules
+    pyasn1_modules.rfc5916: pyasn1_modules
+    pyasn1_modules.rfc5917: pyasn1_modules
+    pyasn1_modules.rfc5924: pyasn1_modules
+    pyasn1_modules.rfc5934: pyasn1_modules
+    pyasn1_modules.rfc5940: pyasn1_modules
+    pyasn1_modules.rfc5958: pyasn1_modules
+    pyasn1_modules.rfc5990: pyasn1_modules
+    pyasn1_modules.rfc6010: pyasn1_modules
+    pyasn1_modules.rfc6019: pyasn1_modules
+    pyasn1_modules.rfc6031: pyasn1_modules
+    pyasn1_modules.rfc6032: pyasn1_modules
+    pyasn1_modules.rfc6120: pyasn1_modules
+    pyasn1_modules.rfc6170: pyasn1_modules
+    pyasn1_modules.rfc6187: pyasn1_modules
+    pyasn1_modules.rfc6210: pyasn1_modules
+    pyasn1_modules.rfc6211: pyasn1_modules
+    pyasn1_modules.rfc6402: pyasn1_modules
+    pyasn1_modules.rfc6402-1: pyasn1_modules
+    pyasn1_modules.rfc6482: pyasn1_modules
+    pyasn1_modules.rfc6486: pyasn1_modules
+    pyasn1_modules.rfc6487: pyasn1_modules
+    pyasn1_modules.rfc6664: pyasn1_modules
+    pyasn1_modules.rfc6955: pyasn1_modules
+    pyasn1_modules.rfc6960: pyasn1_modules
+    pyasn1_modules.rfc7030: pyasn1_modules
+    pyasn1_modules.rfc7191: pyasn1_modules
+    pyasn1_modules.rfc7229: pyasn1_modules
+    pyasn1_modules.rfc7292: pyasn1_modules
+    pyasn1_modules.rfc7296: pyasn1_modules
+    pyasn1_modules.rfc7508: pyasn1_modules
+    pyasn1_modules.rfc7585: pyasn1_modules
+    pyasn1_modules.rfc7633: pyasn1_modules
+    pyasn1_modules.rfc7773: pyasn1_modules
+    pyasn1_modules.rfc7894: pyasn1_modules
+    pyasn1_modules.rfc7894-1: pyasn1_modules
+    pyasn1_modules.rfc7906: pyasn1_modules
+    pyasn1_modules.rfc7914: pyasn1_modules
+    pyasn1_modules.rfc8017: pyasn1_modules
+    pyasn1_modules.rfc8018: pyasn1_modules
+    pyasn1_modules.rfc8103: pyasn1_modules
+    pyasn1_modules.rfc8209: pyasn1_modules
+    pyasn1_modules.rfc8226: pyasn1_modules
+    pyasn1_modules.rfc8358: pyasn1_modules
+    pyasn1_modules.rfc8360: pyasn1_modules
+    pyasn1_modules.rfc8398: pyasn1_modules
+    pyasn1_modules.rfc8410: pyasn1_modules
+    pyasn1_modules.rfc8418: pyasn1_modules
+    pyasn1_modules.rfc8419: pyasn1_modules
+    pyasn1_modules.rfc8479: pyasn1_modules
+    pyasn1_modules.rfc8494: pyasn1_modules
+    pyasn1_modules.rfc8520: pyasn1_modules
+    pyasn1_modules.rfc8619: pyasn1_modules
+    pyasn1_modules.rfc8649: pyasn1_modules
+    pyparsing: pyparsing
+    pyparsing.__init__: pyparsing
+    pyparsing.actions: pyparsing
+    pyparsing.common: pyparsing
+    pyparsing.core: pyparsing
+    pyparsing.diagram: pyparsing
+    pyparsing.diagram.__init__: pyparsing
+    pyparsing.exceptions: pyparsing
+    pyparsing.helpers: pyparsing
+    pyparsing.results: pyparsing
+    pyparsing.testing: pyparsing
+    pyparsing.unicode: pyparsing
+    pyparsing.util: pyparsing
+    requests: requests
+    requests.__init__: requests
+    requests.__version__: requests
+    requests._internal_utils: requests
+    requests.adapters: requests
+    requests.api: requests
+    requests.auth: requests
+    requests.certs: requests
+    requests.compat: requests
+    requests.cookies: requests
+    requests.exceptions: requests
+    requests.help: requests
+    requests.hooks: requests
+    requests.models: requests
+    requests.packages: requests
+    requests.sessions: requests
+    requests.status_codes: requests
+    requests.structures: requests
+    requests.utils: requests
+    rsa: rsa
+    rsa.__init__: rsa
+    rsa._compat: rsa
+    rsa.asn1: rsa
+    rsa.cli: rsa
+    rsa.common: rsa
+    rsa.core: rsa
+    rsa.key: rsa
+    rsa.parallel: rsa
+    rsa.pem: rsa
+    rsa.pkcs1: rsa
+    rsa.pkcs1_v2: rsa
+    rsa.prime: rsa
+    rsa.randnum: rsa
+    rsa.transform: rsa
+    rsa.util: rsa
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_create_folder_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_create_folder_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_delete_folder_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_delete_folder_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_get_folder_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_get_folder_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_get_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_get_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_list_folders_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_list_folders_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_move_folder_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_move_folder_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_search_folders_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_search_folders_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_set_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_set_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_test_iam_permissions_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_test_iam_permissions_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_undelete_folder_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_undelete_folder_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_update_folder_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_folders_update_folder_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_get_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_get_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_get_organization_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_get_organization_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_search_organizations_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_search_organizations_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_set_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_set_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_test_iam_permissions_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_organizations_test_iam_permissions_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_create_project_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_create_project_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_delete_project_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_delete_project_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_get_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_get_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_get_project_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_get_project_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_list_projects_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_list_projects_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_move_project_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_move_project_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_search_projects_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_search_projects_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_set_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_set_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_test_iam_permissions_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_test_iam_permissions_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_undelete_project_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_undelete_project_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_update_project_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_projects_update_project_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_bindings_create_tag_binding_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_bindings_create_tag_binding_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_bindings_delete_tag_binding_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_bindings_delete_tag_binding_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_bindings_list_tag_bindings_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_bindings_list_tag_bindings_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_create_tag_key_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_create_tag_key_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_delete_tag_key_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_delete_tag_key_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_get_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_get_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_get_tag_key_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_get_tag_key_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_list_tag_keys_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_list_tag_keys_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_set_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_set_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_test_iam_permissions_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_test_iam_permissions_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_update_tag_key_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_keys_update_tag_key_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_create_tag_value_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_create_tag_value_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_delete_tag_value_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_delete_tag_value_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_get_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_get_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_get_tag_value_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_get_tag_value_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_list_tag_values_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_list_tag_values_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_set_iam_policy_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_set_iam_policy_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_test_iam_permissions_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_test_iam_permissions_sync: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_update_tag_value_async: google_cloud_resource_manager
+    samples.generated_samples.cloudresourcemanager_v3_generated_tag_values_update_tag_value_sync: google_cloud_resource_manager
+    scripts.fixup_resourcemanager_v3_keywords: google_cloud_resource_manager
+    scripts.readme-gen.readme_gen: google_cloud_resource_manager
+    six: six
+    tests: google_cloud_resource_manager
+    tests.__init__: google_cloud_resource_manager
+    tests.unit: google_cloud_resource_manager
+    tests.unit.__init__: google_cloud_resource_manager
+    tests.unit.gapic: google_cloud_resource_manager
+    tests.unit.gapic.__init__: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.__init__: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.test_folders: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.test_organizations: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.test_projects: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.test_tag_bindings: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.test_tag_keys: google_cloud_resource_manager
+    tests.unit.gapic.resourcemanager_v3.test_tag_values: google_cloud_resource_manager
+    urllib3: urllib3
+    urllib3.__init__: urllib3
+    urllib3._collections: urllib3
+    urllib3._version: urllib3
+    urllib3.connection: urllib3
+    urllib3.connectionpool: urllib3
+    urllib3.contrib: urllib3
+    urllib3.contrib.__init__: urllib3
+    urllib3.contrib._appengine_environ: urllib3
+    urllib3.contrib._securetransport: urllib3
+    urllib3.contrib._securetransport.__init__: urllib3
+    urllib3.contrib._securetransport.bindings: urllib3
+    urllib3.contrib._securetransport.low_level: urllib3
+    urllib3.contrib.appengine: urllib3
+    urllib3.contrib.ntlmpool: urllib3
+    urllib3.contrib.pyopenssl: urllib3
+    urllib3.contrib.securetransport: urllib3
+    urllib3.contrib.socks: urllib3
+    urllib3.exceptions: urllib3
+    urllib3.fields: urllib3
+    urllib3.filepost: urllib3
+    urllib3.packages: urllib3
+    urllib3.packages.__init__: urllib3
+    urllib3.packages.backports: urllib3
+    urllib3.packages.backports.__init__: urllib3
+    urllib3.packages.backports.makefile: urllib3
+    urllib3.packages.six: urllib3
+    urllib3.poolmanager: urllib3
+    urllib3.request: urllib3
+    urllib3.response: urllib3
+    urllib3.util: urllib3
+    urllib3.util.__init__: urllib3
+    urllib3.util.connection: urllib3
+    urllib3.util.proxy: urllib3
+    urllib3.util.queue: urllib3
+    urllib3.util.request: urllib3
+    urllib3.util.response: urllib3
+    urllib3.util.retry: urllib3
+    urllib3.util.ssl_: urllib3
+    urllib3.util.ssl_match_hostname: urllib3
+    urllib3.util.ssltransport: urllib3
+    urllib3.util.timeout: urllib3
+    urllib3.util.url: urllib3
+    urllib3.util.wait: urllib3
+  pip_repository:
+    name: gazelle_python_test
+    incremental: true
+integrity: 32e38932043eca090a64ca741758d8e4a5817c2cd7dc821fc927914c32fb3114
diff --git a/gazelle/testdata/with_third_party_requirements_from_imports/test.yaml b/gazelle/testdata/with_third_party_requirements_from_imports/test.yaml
new file mode 100644
index 0000000..ed97d53
--- /dev/null
+++ b/gazelle/testdata/with_third_party_requirements_from_imports/test.yaml
@@ -0,0 +1 @@
+---