Commit graph

88 commits

Author SHA1 Message Date
IceS2
84ed278720
chore(ingestion): enable basedpyright across the codebase via baseline (#27755)
* chore(ingestion): enable basedpyright across the codebase via baseline

Removes the ~25 paths from `[tool.basedpyright] ignore` (which excluded
roughly 90% of the codebase from type checking) and grandfathers the
existing violations into a baseline file. New violations in any
previously-ignored file now fail CI.

Changes:
- ingestion/pyproject.toml: drop the entire `ignore = [...]` block
- ingestion/setup.py: bump `basedpyright~=1.14` to `~=1.39.0`
- ingestion/.basedpyright/baseline.json (new, ~13MB): captures the
  starting violation set (~18.8K errors + ~37.4K warnings) so the
  migration is behavior-preserving. Regenerate with
  `cd ingestion && basedpyright -p pyproject.toml --baselinefile
  .basedpyright/baseline.json --writebaseline`. basedpyright analysis
  has minor non-determinism (similar to ruff's), so re-running
  --writebaseline a few times converges the baseline.
- ingestion/noxfile.py: pass `--baselinefile .basedpyright/baseline.json`
  to the basedpyright invocation in the `static-checks` session so CI
  honors the grandfathering. CI already runs the session via
  `cd ingestion && nox --no-venv -s static-checks` (py-tests.yml).
- ingestion/Makefile: `make static-checks` now delegates to
  `nox -s static-checks` so local invocations match CI exactly. Also
  drops the dead Python 3.9 / OM_SKIP_SDK_PY39 branch (we require
  Python >=3.10 since the previous modernization PR).
- .gitignore: add `.serena/` (local language-server cache)

* chore(ingestion): add nox to the dev dependency set

The static-checks Makefile target and the py-tests CI job both delegate
to `nox -s static-checks`, but nox was being installed as a separate
side step (`pip install nox` in `install_dev_env`, `uv pip install nox`
in the test-environment composite action). Listing it in dev extras
means a plain `pip install ingestion[dev]` brings it in.

* chore(ingestion): pin basedpyright analysis to py3.10; CI runs once

Following the basedpyright + multi-Python-version research:

- ingestion/pyproject.toml: add `pythonVersion = "3.10"` to
  [tool.basedpyright] so type-checking always analyzes for the lowest
  supported Python version. Forward-incompatible code (tomllib usage,
  PEP 695 generics, etc.) is caught at type-check time regardless of
  which Python interpreter runs the checker.
- .github/workflows/py-tests.yml: gate the "Run Static Checks" step on
  `matrix.py-version == '3.10'`. With pythonVersion pinned, results are
  identical across the matrix; running once avoids redundant work and
  keeps the baseline file deterministic. Unit tests still run on the
  full 3.10/3.11/3.12 matrix to verify runtime compatibility.
- ingestion/.basedpyright/baseline.json: regenerated cleanly with the
  new pythonVersion config (~18.8K errors / ~37.3K warnings, similar
  scale to the previous baseline). Aligns with the canonical
  type-check-on-floor / test-on-matrix pattern used by Pydantic, CPython,
  and other major Python projects.

* chore(ingestion): pin basedpyright pythonPlatform to Linux + regen baseline

CI's previous run still surfaced ~9 issues (2 errors + 7 warnings) that
weren't in the baseline. Root cause: my local environment differs from
CI's in three ways that affect type inference — Python interpreter
(3.11 vs 3.10), platform (Darwin vs Linux), and pip-resolved package
versions (couchbase, avro, trino, sqlalchemy stubs all differ slightly).

This commit closes the platform gap and regenerates the baseline from a
fresh CI-equivalent environment:

- ingestion/pyproject.toml: add `pythonPlatform = "Linux"` to
  [tool.basedpyright] so type-checking uses the Linux subset of stdlib /
  third-party stubs regardless of where the analyzer runs.
- ingestion/.basedpyright/baseline.json: regenerated against a fresh
  Python 3.10 venv installed via `uv pip install ingestion[test]` (the
  same install path CI's setup-openmetadata-test-environment composite
  action uses). New scale: ~18.7K errors / ~37.5K warnings — same
  ballpark as the previous baseline, with column positions now matching
  CI's environment.

Local-developer note: when running `make static-checks` from a venv
that doesn't mirror CI exactly (e.g. macOS, Python 3.11, different
package versions), you may see drift errors. The supported workflow for
regenerating the baseline is to mirror CI:
  python3.10 -m venv /tmp/ci-mirror
  source /tmp/ci-mirror/bin/activate
  uv pip install --upgrade pip "setuptools<81"
  uv pip install --no-build-isolation "cx_Oracle>=8.3.0,<9"
  uv pip install -e "ingestion[test]"
  uv pip install "basedpyright~=1.39.0" nox
  cd ingestion && basedpyright -p pyproject.toml \
      --baselinefile .basedpyright/baseline.json --writebaseline

* chore(ingestion): drop pythonPlatform pin and regen baseline from CI-mirror

The previous attempt added `pythonPlatform = "Linux"` thinking it would
make the local-generated baseline match CI. It did the opposite — Linux
platform stubs activate additional conditional code paths that weren't
analyzed before, so CI saw 101 errors instead of the prior 2 errors.

Reverting:
- Drop `pythonPlatform = "Linux"` from [tool.basedpyright]. Without it,
  basedpyright analyzes for the host platform; on CI's ubuntu-latest
  runner that's Linux automatically, but type-stub coverage stays the
  same as before (matching the d9196dff6b baseline).
- Regenerate ingestion/.basedpyright/baseline.json against a fresh
  Python 3.10 venv installed via `uv pip install ingestion[test]`
  (mirroring CI's setup-openmetadata-test-environment composite action).
  ~18.8K errors / 37.7K warnings captured — same scale as the working
  d9196dff6b version.

Local-developer note: any baseline regeneration done on macOS will drift
from CI's Linux env (different transitive package versions, different
stubs). The supported local mirror procedure:
  python3.10 -m venv /tmp/ci-mirror
  source /tmp/ci-mirror/bin/activate
  uv pip install --upgrade pip "setuptools<81"
  uv pip install --no-build-isolation "cx_Oracle>=8.3.0,<9"
  uv pip install -e "ingestion[test]"
  uv pip install "basedpyright~=1.39.0" nox
  cd ingestion && basedpyright -p pyproject.toml \\
      --baselinefile .basedpyright/baseline.json --writebaseline

* chore(ingestion): regen baseline from full CI install (mac arm64 mirror)

Prior CI-mirror only installed [test], skipping [all] and the four
--no-deps SA pins (sqlalchemy-redshift/databricks/ibmi, pydoris-custom).
That left ~75 connector packages out of the analysis env, so basedpyright
couldn't resolve types from databricks.sqlalchemy, GE 0.18 Batch,
sklearn BaseEstimator, airflow SQLAlchemy models, pandas/numpy stubs,
etc. CI saw 129 errors absent from the baseline.

Regenerated against a fresh py3.10 venv that mirrors
.github/actions/setup-openmetadata-test-environment exactly:
  uv pip install ./ingestion[dev]
  make generate
  uv pip install "setuptools<81"
  uv pip install --no-build-isolation "cx_Oracle>=8.3.0,<9"
  uv pip install --no-deps sqlalchemy-redshift==0.8.14 \
                            sqlalchemy-databricks==0.2.0 \
                            sqlalchemy-ibmi==0.9.3 \
                            pydoris-custom==1.1.0
  uv pip install ./ingestion[all]
  uv pip install ./ingestion[test]
  uv pip install nox

First run: 128 errors, 272 warnings — within 1 error of CI's 129/272.
Wrote baseline with 56,100 entries across 1,035 files. Verify run with
the new baseline reports 0/0/0.

macOS arm64 vs Linux x86_64 wheel resolution may leave a small residual
(~3-7 errors per the d9196dff6b precedent). Re-run --writebaseline 2-3x
if any show up in CI.

* chore(ingestion): silence avro.py:95 basedpyright residual

CI's Linux fastavro stub returns Schema as `str | List[Any]`, while
the macOS arm64 wheel narrows to `str` — the only error not absorbed
by the regenerated baseline. Add a targeted pyright: ignore on the
parse_avro_schema call instead of broadening behavior.

* chore(ingestion): tolerate cross-platform pyright ignore drift

CI's `--baselinemode=lock` (default) requires the baseline to match
exactly — neither up nor down. Two related issues:

1. The avro.py noqa silenced not just the surfaced error but 10
   cascading entries at line 95 (sub-errors propagating from the
   unresolved `schema` arg type). Baseline went `down by 10` → lock
   violated → exit 3 even with `0 errors` reported. Regenerate baseline
   so the 10 stale entries are dropped.

2. The macOS arm64 fastavro stub doesn't surface that error in the
   first place, so basedpyright treats the noqa as
   `reportUnnecessaryTypeIgnoreComment` locally — causing the opposite
   lock mismatch on CI (a warning entry that doesn't exist there).
   Disable the rule so platform-specific residuals can land without
   flapping between local and CI.

* chore(ingestion): use --baselinemode=discard for cross-platform tolerance

CI's implicit default is `lock`, which fails on any baseline change in
either direction (errors going up *or* down) via console.error → exit 3.
That cannot accommodate macOS arm64 vs Linux x86_64 stub drift: a
baseline regenerated locally always carries some entries that don't fire
on CI (and vice versa).

`auto` would tolerate the drift but silently overwrites the baseline
file — unacceptable in CI, where unreviewed changes never get committed
back.

`discard` is the right balance:
  - New errors not in the baseline still fail the run (early-return path
    in BaselineHandler.write before the lock/discard branch).
  - Stale baseline entries (errors that no longer fire on the current
    platform) print an info message and exit 0.
  - The baseline file is never modified.
2026-04-27 17:15:44 +02:00
Teddy
50c17502cf
MINOR - Enable merge group GH event (#27371)
* chore: added merge_group for github merge queue

* chore: remove unnecessary merger group on team labeler

* fix: added gates for merge queue and pull request events
2026-04-15 07:42:08 -07:00
Pere Miquel Brull
f6258819e7
ci: reduce checkout history footprint in PR workflows (#27221)
* ci: reduce checkout history footprint in PR workflows

Optimize actions/checkout usage to avoid downloading the full repo blob
history on every PR run. The repo is large, so cloning everything just
to run tests wastes minutes of CI time per job.

- py-operator-build-test.yml: drop fetch-depth: 0 (no history needed)
- openmetadata-service-unit-tests.yml: drop fetch-depth: 0 (Sonar is
  explicitly skipped via -Dsonar.skip=true); shallow-fetch PR base ref
- airflow-apis-tests.yml, py-tests.yml, yarn-coverage.yml: add
  filter: blob:none to Sonar jobs so commits/trees remain available
  for blame while blobs are fetched lazily on demand
- ui-checkstyle.yml: add filter: blob:none to all jobs that rely on
  tj-actions/changed-files (needs commit/tree metadata, not blobs)

* ci: drop fetch-depth: 0 from jobs that don't walk history

Follow-up audit after the initial pass. Four jobs were still declaring
fetch-depth: 0 (plus filter: blob:none in two cases) without actually
needing any history beyond HEAD.

ui-checkstyle.yml
- i18n-sync: runs 'yarn i18n' then 'git status --porcelain'. git status
  compares the working tree to HEAD; no history walk. Default depth 1
  is sufficient.
- app-docs: same pattern with 'yarn generate:app-docs'.

py-sonarcloud-nightly.yml
- py-unit-tests: only uploads a coverage artifact, no Sonar invocation.
- py-integration-tests: same.
- py-combine-coverage: does run SonarSource/sonarqube-scan-action, so
  it genuinely needs the commit graph — added filter: blob:none for
  parity with the PR Sonar jobs.

* ci: remove unused 'Fetch PR base branch' step from service unit tests

Copilot review flagged that the step was using --depth=1 while the main
checkout is also shallow, which would break any merge-base operation.
On investigation, nothing downstream actually uses the base ref: the
only command that runs after the checkout is 'mvn ... -Dsonar.skip=true',
which has no git dependency. The step was preserved defensively in the
previous commit, but it's dead code — cleanest fix is to delete it.
2026-04-13 10:46:17 -07:00
harshsoni2024
821b2aa30f
Feat: Add python3.12 ingestion support (#26632)
* add python3.12 support

* time utils fix

* pyformat fix

* version changes, tests add
2026-03-30 21:57:29 +00:00
miriann-uu
7efbeb555c
GEN-4896: Fix/ghsa head ref (#26861)
* Fix github.head_ref injection with github.event.pull_request.number

* Fix github.head_ref injection with github.event.pull_request.number

* Fix github.head_ref injection with github.event.pull_request.number
2026-03-30 10:48:12 -04:00
IceS2
e6bfa1f567
fix(ci): replace py-tests skip workflow with job-level path filtering and gate jobs (#26556)
* fix(ci): replace py-tests skip workflow with job-level path filtering and gate jobs

Replace the dual-workflow (real + skip) pattern with a single-workflow
approach using dorny/paths-filter for change detection and job-level
`if` conditions. A job skipped by `if` reports as "Success" for
required checks, eliminating the need for companion skip workflows.

Add inverse-gate status jobs (`py-tests-status`, `py-tests-postgres-status`)
that only run on failure/cancellation. These are the only jobs that need
to be set as required checks in branch protection — one per workflow
instead of one per matrix expansion.

How the gate works:
- All tests pass or skipped → gate is skipped → reports "Success"
- Any test fails → gate runs → exits 1 → blocks merge

Changes:
- py-tests.yml: remove `paths:` filter, add `changes` detection job,
  gate test jobs on its output, add `py-tests-status` gate job
- py-tests-postgres.yml: same approach, add `py-tests-postgres-status`
- Delete py-tests-skip.yml (no longer needed)

* fix(ci): rename postgres gate job to py-tests-status for consistency

The workflow name already provides the context (py-tests-postgres),
so the gate job should just be py-tests-status like in the mysql workflow.
2026-03-17 17:33:15 +01:00
Teddy
48d5c19c36
ISSUE #20036 - sqlalchemy 2.0 migration (#26031)
* chore(sqlalchemy): migrate to sql 2.0

* chore(sqlalchemy): migrate to sql 2.0

* chore: add --no-deps to python ci setup

* chore: fix failing unit tests

* chore(sqlalchemy): migrate to sql 2.0

* chore(sqlalchemy): migrate to sql 2.0

* chore(sqlalchemy): address flagged bugs from CI

* increase unit test timeout

* fix: failing CI

* fi xocnnection bug

* fix CI failures
2026-03-02 13:07:47 -08:00
IceS2
8d86663976
MINOR: Shard integration tests and other improvements (#25907)
* Shard integration tests and other improvements

* fix tests

* fix tests
2026-02-17 08:10:18 +01:00
IceS2
5702d5b069
MINOR: Fix sonar coverage (#25276)
* Fix Sonar Coverage

* Tests

* Fix Sonar Cloud Coverage Upload

* test

* Fix Sonar Cloud Coverage Upload

* Add Sonar Cloud Nightly Run for Ingestion

* Fix Sonar Cloud Coverage Upload

* Fix Sonar Cloud Coverage Upload

* Test

* Fix test branch name

* Undo Makefile testing changes

* Fix Sonar Coverage
2026-01-16 08:35:00 +01:00
Suman Maharana
cdc5595c52
Temporarily remove py 3.12 CI (#24690) 2025-12-04 10:23:55 +01:00
Teddy
1f8cf64dd4
chore: added python 3.12 to CI (#23835)
* chore: added python 3.12 to CI

* chore: changed py-test-skip to 3.12
2025-10-10 17:26:45 +02:00
Sriharsha Chintalapani
bb1395fc72
Implement Modern Fluent API Pattern for OpenMetadata Java Client (#23239)
* Implement Modern Fluent API Pattern for OpenMetadata Java Client

* Add Lineage, Bulk, Search static methods

* Add all API support for Java & Python SDKs

* Add Python SDKs and mock tests

* Add Fluent APIs for sdks

* Add Fluent APIs for sdks

* Add Fluent APIs for sdks, support async import/export

* Remove unnecessary scripts

* fix py checkstyle

* fix tests with new plural form sdks

* Fix tests

* remove examples from python sdk

* remove examples from python sdk

* Fix type check

* Fix pyformat check

* Fix pyformat check

* fix python integration tests

* fix pycheck and pytests

* fix search api pycheck

* fix pycheck

* fix pycheck

* fix pycheck

* Fix test_sdk_integration

* Improvements to SDK

* Remove SDK coverage for Python 3.9

* Remove SDK coverage for Python 3.9

* Remove SDK coverage for Python 3.9
2025-09-29 16:07:02 -07:00
Ayush Shah
d78771ed8d
Update py-tests.yml (#22636) 2025-07-29 16:21:03 +05:30
Mayur Singal
1cbf4cf67b
MINOR: Fix pytest 3.10 running too long (#22211) 2025-07-08 17:19:00 +05:30
Mayur Singal
cd4ae489e3
MINOR: Fix pytest 3.9 (#22085) 2025-07-02 12:03:07 +05:30
Pere Miquel Brull
bcde18b387
DEPRECATE - Remove support for Python 3.8 (#20553) 2025-04-08 07:36:07 +02:00
Akash Jain
d1ae36129c
chore: Disable CI Runs on Draft Pull Requests (#20235) 2025-03-13 11:31:25 +01:00
Chirag Madlani
fc8c6d9b02
chore(ci): only run maven build on Main merge (#20163)
* chore(ci): only run maven build on Main merge

* revert publish maven package
2025-03-10 19:12:02 +05:30
Imri Paran
3980d030b9
fix timeout (#20106) 2025-03-06 09:21:16 +01:00
Imri Paran
dd2bfeaff3
chore: timeout py-tests after 180 minutes (#20077)
* chore: timeout py-tests after 120

* Update py-tests.yml
2025-03-05 17:22:05 +00:00
Akash Jain
4eec3eddea
chore(CI): Upgrade all steps actions to latest release (#20065) 2025-03-04 14:09:53 +01:00
tarunpandey23
372953fc88
updated workflows to remove the deprication issue (#19464)
Co-authored-by: Tarun <tarun.p@deuexsolutions.com>
2025-02-11 10:41:53 +05:30
Imri Paran
9852a948c3
MINOR: concurrency control on py-tests github workflow (#17998) 2024-09-26 15:17:14 +02:00
Imri Paran
3f1324401e
ci: use tagged sonarcloud action (#16858)
following the outage described here: https://community.sonarsource.com/t/outage-sonarscanner-cli-docker-sonarqube-sonarcloud-github-actions/113548/36#report-summary-and-improvements-following-the-sonarscanner-cli-docker-release-on-april-16-2024-1

changed sonarcloud action to use the tagged version
2024-07-01 09:32:11 +00:00
Imri Paran
3f07e85735
MINOR: use test setup action for playwright tests (#16633)
* ci: gh actions

use "Setup OpenMetadata Test Environment" in playwright tests

* added ingestion_dependency as input
2024-06-12 21:10:32 +05:30
Imri Paran
249d6a03b6
fixed pytest workflow environment (#15984) 2024-04-22 15:03:53 +05:30
Imri Paran
d8781bbef2
MINOR: postgres integration test (#15929)
* implemented postgres-integration-tests

* format

* format

* - disable ryuk
- disabled verbose sqlfluff logging

* query usage assertion
2024-04-19 10:00:37 -07:00
IceS2
86a2930cfa
Minor: Fix E2E Ingestion Tests (#15462)
* Fix E2E Tests

* Fix E2E Tests

* Update mysql count, schema changes

* Addition to vertica e2e

* Temporary Github Action modification to test

* Fix Redshift round issue post 10 digits

* modify e2e gh file

* fix gh error

* fix matrix syntax

* Fix Redash counts

* Update py-cli-e2e-tests.yml

* Fix Redshift referenced before assignment error

* Revert Py tests e2e

* Modify Elasticsearch configuration

* Modify Elasticsearch configuration

* Update docker-compose.yml

* Test only running the python tests as e2e

* Comment side effects

* Test

* Test

* Fix name

* Add missing shell property

* Add bigquery to e2e

* Uncomment needed step

* test

* test

* test

* test

* Add control ci pipeline

* Add new e2e tests

* test

* fix

* fix

* fix

* Uncomment needed steps

---------

Co-authored-by: Ayush Shah <ayush@getcollate.io>
2024-03-05 16:00:22 +01:00
Pere Miquel Brull
c62afedebc
MINOR - Bump CI labeller version (#14618) 2024-01-08 11:12:10 +01:00
Pere Miquel Brull
d2bc681015
MINOR - Update CI lewagon/wait-on-check-action version (#14409)
* MINOR - Update CI lewagon/wait-on-check-action version

* MINOR - Update CI lewagon/wait-on-check-action version
2023-12-15 16:53:51 +01:00
Pere Miquel Brull
4651a58980
MINOR - Don't fail fast python CI (#14399) 2023-12-15 07:57:44 +01:00
Pere Miquel Brull
eaacc693bd
#12027 - Add support for Python 3.11 (#14385)
* Fix datamodel codegen and bump versions

* Add 3.11 tests

* Update hive

* pandas

* pandas
2023-12-14 15:46:58 +01:00
Akash Jain
628b26b63a
fix(CI): Python Tests (#13546) 2023-10-12 18:26:13 +05:30
Akash Jain
b4787f0217
fix(CI): Enable workflow_dispatch for PyTests (#13527) 2023-10-11 20:45:37 +05:30
Ayush Shah
1a8b11b29e
Fix Github Actions, Timeout (#13488) 2023-10-09 15:01:23 +05:30
Ayush Shah
2df27c4662
Modify pytest timeout from 30 to 40 mins (#13484) 2023-10-09 09:49:27 +05:30
Sriharsha Chintalapani
03ca972887
Add Java 17 support (#12895)
* Add Java 17 support

* Change Test HTTP client provider

* Create Tests HTTP Client once

* Create Tests HTTP Client once

* fix(CI): Update CI to use jdk 17 and dockerfiles as well

---------

Co-authored-by: Akash-Jain <Akash.J@deuexsolutions.com>
2023-10-03 01:35:50 -07:00
Pere Miquel Brull
e97d4befb1
Fix #12770 - Cleanup DL structure & Readers & Python 3.8 (#12776) 2023-08-09 16:07:16 +05:30
Pere Miquel Brull
604eca9b21
[Test] - Run CI for Python 3.10 (#12393)
* Run CI for Python 3.10

* Update py-tests-skip.yml
2023-07-12 14:42:31 +02:00
Pere Miquel Brull
0d9ec54b55
Ignore docs V1 in CI (#11272) 2023-04-25 18:02:30 +02:00
Pere Miquel Brull
e453593760
Rel to #10805 - Ingestion docs glue & Kerberos Dep (#11157)
* Glue

* Add kerberos system dep
2023-04-20 10:56:46 +02:00
Akash Jain
2e985c6f00
fix(CI): rate limit issue with lewagon/wait-on-check-action (#10833)
* fix(CI): rate limit issue with lewagon/wait-on-check-action

* updating wait-interval to 90 seconds
2023-03-29 19:03:30 +02:00
Nahuel
da808bbe75
Fix: Update when GH actions are triggered (#10777) 2023-03-27 12:16:10 +02:00
Sriharsha Chintalapani
de10cd254b
New docker structure (#10438)
* Adding the different docker-compose file openmetadata and ingestion

* Added two different env files for mysql and postgres

* Updated the docker file path

* Updated the path of docker folder structure

* Fix docker

* Updating the PR with necessary changes required

---------

Co-authored-by: “Vijay” <“vijay.l@deuexsolutions.com”>
Co-authored-by: Akash-Jain <Akash.J@deuexsolutions.com>
2023-03-06 08:58:53 -08:00
Vj-L
dfbee1a6bf
Updated the command for ubuntu dependencies (#10388)
* Updated the command for ubuntu dependencies

* Updated the command for ubuntu dependencies

* Updated the command for ubuntu dependencies

---------

Co-authored-by: “Vijay” <“vijay.l@deuexsolutions.com”>
2023-03-02 15:46:21 +05:30
Nahuel
89fd0dfba7
Pytest CI should not skipped with changes on om-spec or om-service (#10094) 2023-02-02 18:54:55 +00:00
Nahuel
97f325d7bc
Fix: Update CI GitHub actions (#10075)
* Update CI GitHub actions

* Add missing matrix property to Maven CI
2023-02-02 12:26:13 +01:00
Nahuel
7c61c0ad6f
Fix: remove wretry.action from py-test and change retry approach (#9949) 2023-01-27 08:45:20 +01:00
Nahuel
4c91e80132
Fix: configuration of Push Results in PR to Sonar step on py-test GH (#9946) 2023-01-26 19:00:35 +01:00
Nahuel
d03d53a9bb
Fix: configuration of Push Results in PR to Sonar step on py-test GH (#9945) 2023-01-26 18:46:19 +01:00