Commit 7bc5927
committed
Make GCS filesystem lookup lazy to match S3 behavior
FileSystems.get_filesystem("gs://...") raised immediately when the gcp
extra was not installed, because gcsfilesystem.py imported gcsio (and its
google-cloud-storage dependency) at module load time. When that import
failed, GCSFileSystem was never registered, unlike S3FileSystem whose
s3io imports boto3 lazily.
Import gcsio lazily so GCSFileSystem can still be looked up without the
gcp extra, deferring the dependency error to usage time (matching S3). A
single _get_gcsio_module() helper raises a clear ImportError when the
module is unavailable; CHUNK_SIZE, _gcsIO and report_lineage go through
it. Add a regression test that simulates the missing extra in a
subprocess.
Fixes #37445
Signed-off-by: wilmerdooley <wilmerdooley1@gmail.com>1 parent c31f232 commit 7bc5927
2 files changed
Lines changed: 113 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
38 | 47 | | |
39 | 48 | | |
40 | 49 | | |
41 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
42 | 66 | | |
43 | 67 | | |
44 | 68 | | |
45 | 69 | | |
46 | | - | |
47 | 70 | | |
48 | 71 | | |
49 | 72 | | |
50 | 73 | | |
51 | 74 | | |
52 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
53 | 96 | | |
54 | 97 | | |
55 | 98 | | |
| |||
139 | 182 | | |
140 | 183 | | |
141 | 184 | | |
142 | | - | |
| 185 | + | |
| 186 | + | |
143 | 187 | | |
144 | 188 | | |
145 | 189 | | |
| |||
370 | 414 | | |
371 | 415 | | |
372 | 416 | | |
373 | | - | |
374 | | - | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
375 | 420 | | |
376 | 421 | | |
377 | 422 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
24 | 27 | | |
25 | 28 | | |
26 | 29 | | |
| |||
38 | 41 | | |
39 | 42 | | |
40 | 43 | | |
41 | | - | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
42 | 96 | | |
43 | 97 | | |
44 | 98 | | |
| |||
48 | 102 | | |
49 | 103 | | |
50 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
51 | 113 | | |
52 | 114 | | |
53 | 115 | | |
| |||
0 commit comments