Skip to content

Commit

Permalink
Refactor bootstrap generation (open-telemetry#2101)
Browse files Browse the repository at this point in the history
* 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 open-telemetry#2053

* Fix lint

* Fix lint

* Remove aiohttp

* Add missing dependency for aiohttp-client

* Use hatch version
  • Loading branch information
ocelotl authored May 2, 2024
1 parent 2a174b2 commit 1ee7261
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@
"library": "aiohttp ~= 3.0",
"instrumentation": "opentelemetry-instrumentation-aiohttp-client==0.46b0.dev",
},
{
"library": "aiohttp ~= 3.0",
"instrumentation": "opentelemetry-instrumentation-aiohttp-server==0.46b0.dev",
},
{
"library": "aiopg >= 0.13.0, < 2.0.0",
"instrumentation": "opentelemetry-instrumentation-aiopg==0.46b0.dev",
Expand Down Expand Up @@ -191,7 +187,6 @@
"opentelemetry-instrumentation-dbapi==0.46b0.dev",
"opentelemetry-instrumentation-logging==0.46b0.dev",
"opentelemetry-instrumentation-sqlite3==0.46b0.dev",
"opentelemetry-instrumentation-threading==0.46b0.dev",
"opentelemetry-instrumentation-urllib==0.46b0.dev",
"opentelemetry-instrumentation-wsgi==0.46b0.dev",
]
46 changes: 29 additions & 17 deletions scripts/otel_packaging.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
],
Expand Down

0 comments on commit 1ee7261

Please sign in to comment.