Skip to content

Commit 378c892

Browse files
alafanecherejatinyadav-cc
authored andcommitted
✨ source-hubspot: migrate to poetry (airbytehq#35165)
1 parent 4e37051 commit 378c892

File tree

6 files changed

+1133
-127
lines changed

6 files changed

+1133
-127
lines changed
Lines changed: 52 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,91 @@
1-
# HubSpot Source
1+
# Hubspot source connector
22

3-
This is the repository for the HubSpot source connector, written in Python. For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.io/integrations/sources/hubspot).
43

5-
## Primary keys
6-
7-
The primary key for the following streams is `id`:
8-
9-
- campaigns
10-
- companies
11-
- contacts
12-
- deals
13-
- email_events
14-
- engaments
15-
- engagements_calls
16-
- engagements_emails
17-
- engagements_meetings
18-
- engagements_notes
19-
- engagements_tasks
20-
- forms
21-
- goals
22-
- line_items
23-
- marketing_emails
24-
- owners
25-
- products
26-
- tickets
27-
- ticket_pipelines
28-
- workflows
29-
- quotes
30-
31-
The primary key for the following streams is `canonical-vid`:
32-
33-
- contacts_list_memberships
34-
35-
The primary key for the following streams is `pipelineId`:
36-
37-
- deal_pipelines
38-
39-
The primary key for the following streams is `vid-to-merge`:
40-
41-
- contacts_merged_audit
42-
43-
The following streams do not have a primary key:
44-
45-
- contact_lists (The primary key could potentially be a composite key (portalId, listId) - https://legacydocs.hubspot.com/docs/methods/lists/get_lists)
46-
- form_submissions (The entities returned by this endpoint do not have an identifier field - https://legacydocs.hubspot.com/docs/methods/forms/get-submissions-for-a-form)
47-
- subscription_changes (The entities returned by this endpoint do not have an identified field - https://legacydocs.hubspot.com/docs/methods/email/get_subscriptions_timeline)
48-
- property_history (The entities returned by this endpoint do not have an identifier field - https://legacydocs.hubspot.com/docs/methods/contacts/get_contacts)
4+
This is the repository for the Hubspot source connector, written in Python.
5+
For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/hubspot).
496

507
## Local development
518

529
### Prerequisites
10+
* Python (~=3.9)
11+
* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation)
5312

54-
**To iterate on this connector, make sure to complete this prerequisites section.**
5513

56-
#### Minimum Python version required `= 3.7.0`
14+
### Installing the connector
15+
From this connector directory, run:
16+
```bash
17+
poetry install --with dev
18+
```
19+
5720

58-
#### Build & Activate Virtual Environment and install dependencies
21+
### Create credentials
22+
**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/hubspot)
23+
to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_hubspot/spec.yaml` file.
24+
Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information.
25+
See `sample_files/sample_config.json` for a sample config file.
5926

60-
From this connector directory, create a virtual environment:
6127

28+
### Locally running the connector
6229
```
63-
python -m venv .venv
30+
poetry run source-hubspot spec
31+
poetry run source-hubspot check --config secrets/config.json
32+
poetry run source-hubspot discover --config secrets/config.json
33+
poetry run source-hubspot read --config secrets/config.json --catalog sample_files/configured_catalog.json
6434
```
6535

66-
This will generate a virtualenv for this module in `.venv/`. Make sure this venv is active in your development environment of choice. To activate it from the terminal, run:
67-
36+
### Running unit tests
37+
To run unit tests locally, from the connector directory run:
6838
```
69-
source .venv/bin/activate
70-
pip install -r requirements.txt
39+
poetry run pytest unit_tests
7140
```
7241

73-
If you are in an IDE, follow your IDE's instructions to activate the virtualenv.
74-
75-
Note that while we are installing dependencies from `requirements.txt`, you should only edit `setup.py` for your dependencies. `requirements.txt` is used for editable installs (`pip install -e`) to pull in Python dependencies from the monorepo and will call `setup.py`. If this is mumbo jumbo to you, don't worry about it, just put your deps in `setup.py` but install using `pip install -r requirements.txt` and everything should work as you expect.
76-
77-
#### Create credentials
78-
79-
**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.io/integrations/sources/hubspot)
80-
to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_hubspot/spec.yaml` file. Note that the `secrets` directory is gitignored by default, so there is no danger of accidentally checking in sensitive information. See `sample_files/sample_config.json` for a sample config file.
42+
### Building the docker image
43+
1. Install [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md)
44+
2. Run the following command to build the docker image:
45+
```bash
46+
airbyte-ci connectors --name=source-hubspot build
47+
```
8148

82-
**If you are an Airbyte core member**, copy the credentials in Lastpass under the secret name `source hubspot test creds`
83-
and place them into `secrets/config.json`.
49+
An image will be available on your host with the tag `airbyte/source-hubspot:dev`.
8450

85-
### Locally running the connector
8651

52+
### Running as a docker container
53+
Then run any of the connector commands as follows:
8754
```
88-
python main.py spec
89-
python main.py check --config secrets/config.json
90-
python main.py discover --config secrets/config.json
91-
python main.py read --config secrets/config.json --catalog sample_files/basic_read_catalog.json
55+
docker run --rm airbyte/source-hubspot:dev spec
56+
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-hubspot:dev check --config /secrets/config.json
57+
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-hubspot:dev discover --config /secrets/config.json
58+
docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-hubspot:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json
9259
```
9360

94-
95-
## Testing
61+
### Running our CI test suite
9662
You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md):
9763
```bash
9864
airbyte-ci connectors --name=source-hubspot test
9965
```
10066

10167
### Customizing acceptance Tests
102-
Customize `acceptance-test-config.yml` file to configure tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
68+
Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
10369
If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py.
10470

105-
## Dependency Management
71+
### Dependency Management
72+
All of your dependencies should be managed via Poetry.
73+
To add a new dependency, run:
74+
```bash
75+
poetry add <package-name>
76+
```
10677

107-
All of your dependencies should go in `setup.py`, NOT `requirements.txt`. The requirements file is only used to connect internal Airbyte dependencies in the monorepo for local development.
78+
Please commit the changes to `pyproject.toml` and `poetry.lock` files.
10879

109-
### Publishing a new version of the connector
80+
## Publishing a new version of the connector
11081
You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
11182
1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-hubspot test`
112-
2. Bump the connector version in `metadata.yaml`: increment the `dockerImageTag` value. Please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors).
83+
2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)):
84+
- bump the `dockerImageTag` value in in `metadata.yaml`
85+
- bump the `version` value in `pyproject.toml`
11386
3. Make sure the `metadata.yaml` content is up to date.
114-
4. Make the connector documentation and its changelog is up to date (`docs/integrations/sources/hubspot.md`).
87+
4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/hubspot.md`).
11588
5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention).
11689
6. Pat yourself on the back for being an awesome contributor.
11790
7. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master.
118-
91+
8. Once your PR is merged, the new version of the connector will be automatically published to Docker Hub and our connector registry.

airbyte-integrations/connectors/source-hubspot/metadata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ data:
1010
connectorSubtype: api
1111
connectorType: source
1212
definitionId: 36c891d9-4bd9-43ac-bad2-10e12756272c
13-
dockerImageTag: 3.1.0
13+
dockerImageTag: 3.1.1
1414
dockerRepository: airbyte/source-hubspot
1515
documentationUrl: https://docs.airbyte.com/integrations/sources/hubspot
1616
githubIssueLabel: source-hubspot

0 commit comments

Comments
 (0)