mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-03 04:10:48 +08:00
Refactor bootstrap generation (#2101)
* Refactor bootstrap generation This makes the bootstrap script get the package version directly from pypi instead of from our lists of packages. This makes sure that the packages are actually available for the end user to install. Fixes #2053 * Fix lint * Fix lint * Remove aiohttp * Add missing dependency for aiohttp-client * Use hatch version
This commit is contained in:
@ -12,43 +12,55 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
from subprocess import CalledProcessError
|
||||
from tomli import load
|
||||
from os import path, listdir
|
||||
from subprocess import check_output, CalledProcessError
|
||||
from requests import get
|
||||
|
||||
import tomli
|
||||
|
||||
scripts_path = os.path.dirname(os.path.abspath(__file__))
|
||||
root_path = os.path.dirname(scripts_path)
|
||||
instrumentations_path = os.path.join(root_path, "instrumentation")
|
||||
scripts_path = path.dirname(path.abspath(__file__))
|
||||
root_path = path.dirname(scripts_path)
|
||||
instrumentations_path = path.join(root_path, "instrumentation")
|
||||
|
||||
|
||||
def get_instrumentation_packages():
|
||||
for pkg in sorted(os.listdir(instrumentations_path)):
|
||||
pkg_path = os.path.join(instrumentations_path, pkg)
|
||||
if not os.path.isdir(pkg_path):
|
||||
for pkg in sorted(listdir(instrumentations_path)):
|
||||
pkg_path = path.join(instrumentations_path, pkg)
|
||||
if not path.isdir(pkg_path):
|
||||
continue
|
||||
|
||||
error = f"Could not get version for package {pkg}"
|
||||
|
||||
try:
|
||||
version = subprocess.check_output(
|
||||
hatch_version = check_output(
|
||||
"hatch version",
|
||||
shell=True,
|
||||
cwd=pkg_path,
|
||||
universal_newlines=True,
|
||||
universal_newlines=True
|
||||
)
|
||||
|
||||
except CalledProcessError as exc:
|
||||
print(f"Could not get hatch version from path {pkg_path}")
|
||||
print(exc.output)
|
||||
raise exc
|
||||
|
||||
pyproject_toml_path = os.path.join(pkg_path, "pyproject.toml")
|
||||
try:
|
||||
response = get(f"https://pypi.org/pypi/{pkg}/json", timeout=10)
|
||||
|
||||
except Exception:
|
||||
print(error)
|
||||
continue
|
||||
|
||||
if response.status_code != 200:
|
||||
print(error)
|
||||
continue
|
||||
|
||||
pyproject_toml_path = path.join(pkg_path, "pyproject.toml")
|
||||
|
||||
with open(pyproject_toml_path, "rb") as file:
|
||||
pyproject_toml = tomli.load(file)
|
||||
pyproject_toml = load(file)
|
||||
|
||||
instrumentation = {
|
||||
"name": pyproject_toml["project"]["name"],
|
||||
"version": version.strip(),
|
||||
"version": hatch_version.strip(),
|
||||
"instruments": pyproject_toml["project"]["optional-dependencies"][
|
||||
"instruments"
|
||||
],
|
||||
|
Reference in New Issue
Block a user