Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Source Airtable: fix cases with empty result while discover the schema #22245

Merged
merged 4 commits into from Feb 2, 2023

Conversation

bazarnov
Copy link
Collaborator

@bazarnov bazarnov commented Feb 1, 2023

What

Resolving: https://github.com/airbytehq/oncall/issues/1432

How

  • for certain fields types, the result object could be Null, which means we should fallback to string type

🚨 User Impact 🚨

No impact is expected. Just fixing the blocker.

Pre-merge Checklist

Expand the relevant checklist and delete the others.

Updating a connector

Community member or Airbyter

  • Unit & integration tests added and passing. Community members, please provide proof of success locally e.g: screenshot or copy-paste unit, integration, and acceptance test output. To run acceptance tests for a Python connector, follow instructions in the README. For java connectors run ./gradlew :airbyte-integrations:connectors:<name>:integrationTest.
  • Code reviews completed
  • Documentation updated
    • Connector's README.md
    • Connector's bootstrap.md. See description and examples
    • Changelog updated in docs/integrations/<source or destination>/<name>.md including changelog. See changelog example
  • PR name follows PR naming conventions

Airbyter

If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.

  • Create a non-forked branch based on this PR and test the below items on it
  • Build is successful
  • If new credentials are required for use in CI, add them to GSM. Instructions.
  • /test connector=connectors/<name> command is passing
  • New Connector version released on Dockerhub and connector version bumped by running the /publish command described here

@octavia-squidington-iii octavia-squidington-iii added the area/documentation Improvements or additions to documentation label Feb 1, 2023
@bazarnov
Copy link
Collaborator Author

bazarnov commented Feb 1, 2023

/test connector=connectors/source-airtable

🕑 connectors/source-airtable https://github.com/airbytehq/airbyte/actions/runs/4069438791
✅ connectors/source-airtable https://github.com/airbytehq/airbyte/actions/runs/4069438791
Python tests coverage:

Name                                Stmts   Miss  Cover
-------------------------------------------------------
source_airtable/__init__.py             2      0   100%
source_airtable/streams.py             92      1    99%
source_airtable/source.py              38      1    97%
source_airtable/schema_helpers.py      43      6    86%
source_airtable/auth.py                21     10    52%
-------------------------------------------------------
TOTAL                                 196     18    91%
	 Name                                                 Stmts   Miss  Cover   Missing
	 ----------------------------------------------------------------------------------
	 source_acceptance_test/base.py                          12      4    67%   16-19
	 source_acceptance_test/config.py                       141      5    96%   87, 93, 239, 243-244
	 source_acceptance_test/conftest.py                     211     95    55%   36, 42-44, 49, 54, 77, 83, 89-91, 110, 115-117, 123-125, 131-132, 137-138, 143, 149, 158-167, 173-178, 193, 217, 248, 254, 262-267, 275-285, 293-306, 311-317, 324-335, 342-358
	 source_acceptance_test/plugin.py                        69     25    64%   22-23, 31, 36, 120-140, 144-148
	 source_acceptance_test/tests/test_core.py              476    117    75%   53, 58, 97-108, 113-120, 124-125, 129-130, 380, 400, 438, 476-493, 506-517, 521-526, 532, 565-570, 608-615, 658-660, 663, 728-736, 748-751, 756, 812-813, 819, 822, 858-868, 881-906
	 source_acceptance_test/tests/test_incremental.py       160     14    91%   58-65, 70-83, 246
	 source_acceptance_test/utils/asserts.py                 39      2    95%   62-63
	 source_acceptance_test/utils/common.py                  94     10    89%   16-17, 32-38, 72, 75
	 source_acceptance_test/utils/compare.py                 62     23    63%   21-51, 68, 97-99
	 source_acceptance_test/utils/connector_runner.py       133     33    75%   24-27, 46-47, 50-54, 57-58, 73-75, 78-80, 83-85, 88-90, 93-95, 124-125, 159-161, 208
	 source_acceptance_test/utils/json_schema_helper.py     114     13    89%   31-32, 39, 42, 66-69, 97, 121, 203-205
	 ----------------------------------------------------------------------------------
	 TOTAL                                                 1690    341    80%

Build Passed

Test summary info:

=========================== short test summary info ============================
SKIPPED [1] ../usr/local/lib/python3.9/site-packages/source_acceptance_test/plugin.py:63: Skipping TestIncremental.test_two_sequential_reads: Incremental syncs are not supported on this connector.
SKIPPED [1] ../usr/local/lib/python3.9/site-packages/source_acceptance_test/tests/test_core.py:98: The previous and actual specifications are identical.
SKIPPED [2] ../usr/local/lib/python3.9/site-packages/source_acceptance_test/tests/test_core.py:507: The previous and actual discovered catalogs are identical.
================== 44 passed, 4 skipped in 140.52s (0:02:20) ===================

Copy link
Contributor

@pedroslopez pedroslopez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@@ -89,17 +91,22 @@ def get_json_schema(table: Dict[str, Any]) -> Dict[str, str]:
name: str = SchemaHelpers.clean_name(field.get("name"))
original_type: str = field.get("type")
options: Dict = field.get("options", {})
exec_type: str = options.get("result", {}).get("type") if options else None
field_type: str = exec_type if exec_type else original_type
options_result: Dict = options.get("result", {})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need an if options else None here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept that to ensure options: null case is covered, just in case)

@pedroslopez
Copy link
Contributor

Just got paged for this - publishing now.

@pedroslopez
Copy link
Contributor

pedroslopez commented Feb 2, 2023

/publish connector=airbyte/source-airtable

🕑 Publishing the following connectors:
airbyte/source-airtable
https://github.com/airbytehq/airbyte/actions/runs/4071920637


Connector Did it publish? Were definitions generated?
airbyte/source-airtable

if you have connectors that successfully published but failed definition generation, follow step 4 here ▶️

@pedroslopez
Copy link
Contributor

pedroslopez commented Feb 2, 2023

/publish connector=connectors/source-airtable

🕑 Publishing the following connectors:
connectors/source-airtable
https://github.com/airbytehq/airbyte/actions/runs/4071933407


Connector Did it publish? Were definitions generated?
connectors/source-airtable

if you have connectors that successfully published but failed definition generation, follow step 4 here ▶️

@airbyteio airbyteio temporarily deployed to more-secrets February 2, 2023 07:08 — with GitHub Actions Inactive
@airbyteio airbyteio temporarily deployed to more-secrets February 2, 2023 07:08 — with GitHub Actions Inactive
@pedroslopez pedroslopez enabled auto-merge (squash) February 2, 2023 07:13
@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2023

Airbyte Code Coverage

There is no coverage information present for the Files changed

Total Project Coverage 24.52%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/connectors Connector related issues area/documentation Improvements or additions to documentation connectors/source/airtable
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants