Skip to content

Commit c9868e4

Browse files
authored
fix(python): clean more selectively in Python versioned GAPIC folders (#4290)
Now that we've got handwritten code in google-cloud-python, we need to be more careful about what we delete. (Without this change, lots of code in packages/google-cloud-logging/google/cloud/logging/v2 was deleted.)
1 parent 3755ecd commit c9868e4

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

internal/librarian/python/clean.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ const neutralSourcePlaceholder = "{neutral-source}"
4747
var (
4848
errBadAPIPath = errors.New("invalid API path")
4949
errNoCommonGAPICFilesConfig = errors.New("when cleaning a GAPIC package, a config with common GAPIC paths must be provided")
50+
// versionedGAPICRelativePathsToClean is the set of paths to remove for each
51+
// API-versioned GAPIC output directory, relative to that directory.
52+
versionedGAPICRelativePathsToClean = []string{
53+
"services",
54+
"types",
55+
"__init__.py",
56+
"gapic_version.py",
57+
"gapic_metadata.json",
58+
"py.typed",
59+
}
5060
)
5161

5262
// CleanLibrary removes all generated code from beneath the given library's
@@ -129,8 +139,10 @@ func cleanGAPIC(api *config.API, lib *config.Library) error {
129139
return nil
130140
}
131141
srcDir := filepath.Join(generationInfo.RootDir, generationInfo.VersionDir)
132-
if err := deleteUnlessKept(lib, srcDir); err != nil {
133-
return err
142+
for _, relativePath := range versionedGAPICRelativePathsToClean {
143+
if err := deleteUnlessKept(lib, filepath.Join(srcDir, relativePath)); err != nil {
144+
return err
145+
}
134146
}
135147
docsDir := filepath.Join("docs", generationInfo.VersionDir)
136148
return deleteUnlessKept(lib, docsDir)

internal/librarian/python/clean_test.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func TestCleanLibrary(t *testing.T) {
9494
},
9595
Keep: []string{
9696
"google/cloud/secretmanager/keep-me.txt",
97-
"google/cloud/secretmanager_v1/keep-me.txt",
97+
"google/cloud/secretmanager_v1/types/keep-me.txt",
9898
},
9999
},
100100
setupFiles: []string{
@@ -103,15 +103,15 @@ func TestCleanLibrary(t *testing.T) {
103103
"google/cloud/secretmanager/leave-me.txt",
104104
"google/cloud/secretmanager/keep-me.txt",
105105
"google/cloud/secretmanager/delete-me.txt",
106-
"google/cloud/secretmanager_v1/delete-me.txt",
107-
"google/cloud/secretmanager_v1/keep-me.txt",
106+
"google/cloud/secretmanager_v1/types/delete-me.txt",
107+
"google/cloud/secretmanager_v1/types/keep-me.txt",
108108
"docs/delete-me.txt",
109109
"delete-me-directory/a.txt",
110110
"delete-me-directory/subdirectory/b.txt",
111111
},
112112
wantDeleted: []string{
113113
"google/cloud/secretmanager/delete-me.txt",
114-
"google/cloud/secretmanager_v1/delete-me.txt",
114+
"google/cloud/secretmanager_v1/types/delete-me.txt",
115115
"docs/delete-me.txt",
116116
"delete-me-directory/a.txt",
117117
"delete-me-directory/subdirectory/b.txt",
@@ -437,7 +437,13 @@ func TestCleanGAPIC(t *testing.T) {
437437
setupFiles: []string{
438438
"google/cloud/functions/gapic_version.py",
439439
"google/cloud/functions_v1/gapic_version.py",
440-
"google/cloud/functions_v1/keep-me.txt",
440+
"google/cloud/functions_v1/__init__.py",
441+
"google/cloud/functions_v1/py.typed",
442+
"google/cloud/functions_v1/gapic_metadata.json",
443+
"google/cloud/functions_v1/services/generated.py",
444+
"google/cloud/functions_v1/types/generated.py",
445+
"google/cloud/functions_v1/other/ignored.py",
446+
"google/cloud/functions_v1/handwritten.py",
441447
"docs/functions_v1/README.txt",
442448
"keep-me.txt",
443449
"noxfile.py",
@@ -447,11 +453,15 @@ func TestCleanGAPIC(t *testing.T) {
447453
APIs: []*config.API{{Path: "google/cloud/functions/v1"}},
448454
Keep: []string{
449455
"keep-me.txt",
450-
"google/cloud/functions_v1/keep-me.txt",
451456
},
452457
},
453458
wantDeleted: []string{
454459
"google/cloud/functions_v1/gapic_version.py",
460+
"google/cloud/functions_v1/__init__.py",
461+
"google/cloud/functions_v1/py.typed",
462+
"google/cloud/functions_v1/gapic_metadata.json",
463+
"google/cloud/functions_v1/services/generated.py",
464+
"google/cloud/functions_v1/types/generated.py",
455465
"docs/functions_v1/README.txt",
456466
},
457467
},
@@ -516,7 +526,7 @@ func TestCleanGAPIC_Error(t *testing.T) {
516526
},
517527
setup: func(t *testing.T, dir string) {
518528
sourceDirectory := filepath.Join(dir, "google", "cloud", "functions_v1")
519-
createFileAndDirectories(t, filepath.Join(sourceDirectory, "file.txt"))
529+
createFileAndDirectories(t, filepath.Join(sourceDirectory, "gapic_version.py"))
520530
if err := os.Chmod(sourceDirectory, 0555); err != nil {
521531
t.Fatal(err)
522532
}

0 commit comments

Comments
 (0)