diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..cbdffe129b --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,14 @@ +repos: + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 24.3.0 + hooks: + - id: black + language_version: python3.11 + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + - repo: https://github.com/pycqa/flake8 + rev: '6.1.0' + hooks: + - id: flake8 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c4bae0f47..3de25a4e67 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -70,6 +70,17 @@ An easier way to do so is: 1. Run `.tox/lint-some-package/bin/black .` 2. Run `.tox/lint-some-package/bin/isort .` +Or you can call formatting and linting in one command by [pre-commit](https://pre-commit.com/): + +```console +$ pre-commit +``` + +You can also configure it to run lint tools automatically before committing with: + +```console +$ pre-commit install + See [`tox.ini`](https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/tox.ini) for more detail on available tox commands. diff --git a/dev-requirements.txt b/dev-requirements.txt index 1c49c57b7e..be65b731c7 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -17,3 +17,5 @@ codespell==2.1.0 requests==2.31.0 ruamel.yaml==0.17.21 flaky==3.7.0 +pre-commit==3.7.0; python_version >= '3.9' +pre-commit==3.5.0; python_version < '3.9' diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py index f7a97f56f8..55d2f498a1 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py @@ -187,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", ] diff --git a/scripts/otel_packaging.py b/scripts/otel_packaging.py index 434807fb97..c6c11c45fa 100644 --- a/scripts/otel_packaging.py +++ b/scripts/otel_packaging.py @@ -12,23 +12,36 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os - -import tomli +from tomli import load +from os import path, listdir +from subprocess import check_output, CalledProcessError from requests import get -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: + hatch_version = check_output( + "hatch version", + shell=True, + cwd=pkg_path, + universal_newlines=True + ) + + except CalledProcessError as exc: + print(f"Could not get hatch version from path {pkg_path}") + print(exc.output) + try: response = get(f"https://pypi.org/pypi/{pkg}/json", timeout=10) @@ -40,16 +53,14 @@ def get_instrumentation_packages(): print(error) continue - version = response.json()["info"]["version"] - - pyproject_toml_path = os.path.join(pkg_path, "pyproject.toml") + 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" ], @@ -64,4 +75,4 @@ def get_instrumentation_packages(): if __name__ == "__main__": - print(list(get_instrumentation_packages())) \ No newline at end of file + print(list(get_instrumentation_packages()))