Skip to content

Commit 928e47b

Browse files
test: add session with prerelease dependencies (#428)
* test: add session with prerelease dependencies * fix owlbot * add kokoro configs * match whitespace * remove extra whitespace * escape in replacement * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * move nox session to avoid duplicates * escape more parens * escape asterix * missing comma * don't remove indent Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 2180836 commit 928e47b

File tree

4 files changed

+197
-0
lines changed

4 files changed

+197
-0
lines changed

.kokoro/continuous/prerelease.cfg

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Format: //devtools/kokoro/config/proto/build.proto
2+
3+
# Only run this nox session.
4+
env_vars: {
5+
key: "NOX_SESSION"
6+
value: "prerelease"
7+
}

.kokoro/presubmit/prerelease.cfg

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Format: //devtools/kokoro/config/proto/build.proto
2+
3+
# Only run this nox session.
4+
env_vars: {
5+
key: "NOX_SESSION"
6+
value: "prerelease"
7+
}

noxfile.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from __future__ import absolute_import
2020
import os
2121
import pathlib
22+
import re
2223
import shutil
2324

2425
import nox
@@ -167,6 +168,89 @@ def system(session):
167168
)
168169

169170

171+
@nox.session(python=DEFAULT_PYTHON_VERSION)
172+
def prerelease(session):
173+
session.install(
174+
"--extra-index-url",
175+
"https://pypi.fury.io/arrow-nightlies/",
176+
"--prefer-binary",
177+
"--pre",
178+
"--upgrade",
179+
"pyarrow",
180+
)
181+
session.install(
182+
"--extra-index-url",
183+
"https://pypi.anaconda.org/scipy-wheels-nightly/simple",
184+
"--prefer-binary",
185+
"--pre",
186+
"--upgrade",
187+
"pandas",
188+
)
189+
session.install(
190+
"--prefer-binary",
191+
"--pre",
192+
"--upgrade",
193+
"google-api-core",
194+
"google-cloud-bigquery",
195+
"google-cloud-bigquery-storage",
196+
"google-cloud-core",
197+
"google-resumable-media",
198+
"grpcio",
199+
)
200+
session.install(
201+
"freezegun",
202+
"google-cloud-datacatalog",
203+
"google-cloud-storage",
204+
"google-cloud-testutils",
205+
"IPython",
206+
"mock",
207+
"psutil",
208+
"pytest",
209+
"pytest-cov",
210+
)
211+
212+
# Because we test minimum dependency versions on the minimum Python
213+
# version, the first version we test with in the unit tests sessions has a
214+
# constraints file containing all dependencies and extras.
215+
with open(
216+
CURRENT_DIRECTORY
217+
/ "testing"
218+
/ f"constraints-{UNIT_TEST_PYTHON_VERSIONS[0]}.txt",
219+
encoding="utf-8",
220+
) as constraints_file:
221+
constraints_text = constraints_file.read()
222+
223+
# Ignore leading whitespace and comment lines.
224+
deps = [
225+
match.group(1)
226+
for match in re.finditer(
227+
r"^\s*(\S+)(?===\S+)", constraints_text, flags=re.MULTILINE
228+
)
229+
]
230+
231+
# We use --no-deps to ensure that pre-release versions aren't overwritten
232+
# by the version ranges in setup.py.
233+
session.install(*deps)
234+
session.install("--no-deps", "-e", ".[all]")
235+
236+
# Print out prerelease package versions.
237+
session.run("python", "-m", "pip", "freeze")
238+
239+
# Run all tests, except a few samples tests which require extra dependencies.
240+
session.run(
241+
"py.test",
242+
"--quiet",
243+
f"--junitxml=prerelease_unit_{session.python}_sponge_log.xml",
244+
os.path.join("tests", "unit"),
245+
)
246+
session.run(
247+
"py.test",
248+
"--quiet",
249+
f"--junitxml=prerelease_system_{session.python}_sponge_log.xml",
250+
os.path.join("tests", "system"),
251+
)
252+
253+
170254
@nox.session(python=DEFAULT_PYTHON_VERSION)
171255
def cover(session):
172256
"""Run the final coverage report.

owlbot.py

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"""This script is used to synthesize generated parts of this library."""
1616

1717
import pathlib
18+
import re
1819

1920
import synthtool as s
2021
from synthtool import gcp
@@ -55,14 +56,112 @@
5556
# Fixup files
5657
# ----------------------------------------------------------------------------
5758

59+
s.replace(
60+
["noxfile.py"],
61+
r"import pathlib\s+import shutil",
62+
"import pathlib\nimport re\nimport shutil",
63+
)
64+
5865
s.replace(
5966
["noxfile.py"], r"[\"']google[\"']", '"pandas_gbq"',
6067
)
6168

69+
6270
s.replace(
6371
["noxfile.py"], "--cov=google", "--cov=pandas_gbq",
6472
)
6573

74+
s.replace(
75+
["noxfile.py"],
76+
r"@nox.session\(python=DEFAULT_PYTHON_VERSION\)\s+def cover\(session\):",
77+
r"""@nox.session(python=DEFAULT_PYTHON_VERSION)
78+
def prerelease(session):
79+
session.install(
80+
"--extra-index-url",
81+
"https://pypi.fury.io/arrow-nightlies/",
82+
"--prefer-binary",
83+
"--pre",
84+
"--upgrade",
85+
"pyarrow",
86+
)
87+
session.install(
88+
"--extra-index-url",
89+
"https://pypi.anaconda.org/scipy-wheels-nightly/simple",
90+
"--prefer-binary",
91+
"--pre",
92+
"--upgrade",
93+
"pandas",
94+
)
95+
session.install(
96+
"--prefer-binary",
97+
"--pre",
98+
"--upgrade",
99+
"google-api-core",
100+
"google-cloud-bigquery",
101+
"google-cloud-bigquery-storage",
102+
"google-cloud-core",
103+
"google-resumable-media",
104+
"grpcio",
105+
)
106+
session.install(
107+
"freezegun",
108+
"google-cloud-datacatalog",
109+
"google-cloud-storage",
110+
"google-cloud-testutils",
111+
"IPython",
112+
"mock",
113+
"psutil",
114+
"pytest",
115+
"pytest-cov",
116+
)
117+
118+
# Because we test minimum dependency versions on the minimum Python
119+
# version, the first version we test with in the unit tests sessions has a
120+
# constraints file containing all dependencies and extras.
121+
with open(
122+
CURRENT_DIRECTORY
123+
/ "testing"
124+
/ f"constraints-{UNIT_TEST_PYTHON_VERSIONS[0]}.txt",
125+
encoding="utf-8",
126+
) as constraints_file:
127+
constraints_text = constraints_file.read()
128+
129+
# Ignore leading whitespace and comment lines.
130+
deps = [
131+
match.group(1)
132+
for match in re.finditer(
133+
r"^\\s*(\\S+)(?===\\S+)", constraints_text, flags=re.MULTILINE
134+
)
135+
]
136+
137+
# We use --no-deps to ensure that pre-release versions aren't overwritten
138+
# by the version ranges in setup.py.
139+
session.install(*deps)
140+
session.install("--no-deps", "-e", ".[all]")
141+
142+
# Print out prerelease package versions.
143+
session.run("python", "-m", "pip", "freeze")
144+
145+
# Run all tests, except a few samples tests which require extra dependencies.
146+
session.run(
147+
"py.test",
148+
"--quiet",
149+
f"--junitxml=prerelease_unit_{session.python}_sponge_log.xml",
150+
os.path.join("tests", "unit"),
151+
)
152+
session.run(
153+
"py.test",
154+
"--quiet",
155+
f"--junitxml=prerelease_system_{session.python}_sponge_log.xml",
156+
os.path.join("tests", "system"),
157+
)
158+
159+
160+
@nox.session(python=DEFAULT_PYTHON_VERSION)
161+
def cover(session):""",
162+
re.MULTILINE,
163+
)
164+
66165
s.replace(
67166
[".github/header-checker-lint.yml"], '"Google LLC"', '"pandas-gbq Authors"',
68167
)

0 commit comments

Comments
 (0)