tap-erpnext 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tap_erpnext-0.1.0/.env.example +20 -0
- tap_erpnext-0.1.0/.github/dependabot.yml +36 -0
- tap_erpnext-0.1.0/.github/workflows/build.yml +52 -0
- tap_erpnext-0.1.0/.github/workflows/run-zizmor.yml +31 -0
- tap_erpnext-0.1.0/.github/workflows/test.yml +81 -0
- tap_erpnext-0.1.0/.gitignore +136 -0
- tap_erpnext-0.1.0/.pre-commit-config.yaml +48 -0
- tap_erpnext-0.1.0/.vscode/launch.json +19 -0
- tap_erpnext-0.1.0/AGENTS.md +389 -0
- tap_erpnext-0.1.0/LICENSE +21 -0
- tap_erpnext-0.1.0/PKG-INFO +160 -0
- tap_erpnext-0.1.0/README.md +135 -0
- tap_erpnext-0.1.0/catalog.json +70 -0
- tap_erpnext-0.1.0/meltano.yml +70 -0
- tap_erpnext-0.1.0/output/.gitignore +4 -0
- tap_erpnext-0.1.0/plan.md +557 -0
- tap_erpnext-0.1.0/plugins/loaders/target-jsonl--andyh1203.lock +34 -0
- tap_erpnext-0.1.0/plugins/loaders/target-sqlite--meltanolabs.lock +39 -0
- tap_erpnext-0.1.0/pyproject.toml +152 -0
- tap_erpnext-0.1.0/tap_erpnext/__init__.py +1 -0
- tap_erpnext-0.1.0/tap_erpnext/__main__.py +7 -0
- tap_erpnext-0.1.0/tap_erpnext/client.py +141 -0
- tap_erpnext-0.1.0/tap_erpnext/streams.py +49 -0
- tap_erpnext-0.1.0/tap_erpnext/tap.py +117 -0
- tap_erpnext-0.1.0/tests/__init__.py +1 -0
- tap_erpnext-0.1.0/tests/test_core.py +151 -0
- tap_erpnext-0.1.0/uv.lock +2049 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# ERPNext Configuration
|
|
2
|
+
# Copy this file to .env and fill in your actual values
|
|
3
|
+
|
|
4
|
+
# Required: API URL of the ERPNext instance
|
|
5
|
+
TAP_ERPNEXT_API_URL=https://kalmijnconsulting.jh.frappe.cloud
|
|
6
|
+
|
|
7
|
+
# Required: ERPNext API key
|
|
8
|
+
TAP_ERPNEXT_API_KEY=1377f67924bc4d8
|
|
9
|
+
# Required: ERPNext API secret
|
|
10
|
+
TAP_ERPNEXT_API_SECRET=8be3e90b7b3dc62
|
|
11
|
+
|
|
12
|
+
# Optional: The earliest record date to sync (ISO format, in ERPNext server timezone)
|
|
13
|
+
TAP_ERPNEXT_START_DATE=2023-01-01T00:00:00
|
|
14
|
+
|
|
15
|
+
# Optional: Number of records to fetch per API request
|
|
16
|
+
TAP_ERPNEXT_LIMIT_PAGE_LENGTH=200
|
|
17
|
+
|
|
18
|
+
# Optional: Comma-separated list of DocType names to sync (leave empty to sync all)
|
|
19
|
+
# Example: TAP_ERPNEXT_DOCTYPES=Sales Invoice,Customer,Item
|
|
20
|
+
TAP_ERPNEXT_DOCTYPES=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: uv
|
|
9
|
+
directory: "/"
|
|
10
|
+
schedule:
|
|
11
|
+
interval: weekly
|
|
12
|
+
commit-message:
|
|
13
|
+
prefix: "chore(deps): "
|
|
14
|
+
prefix-development: "chore(deps-dev): "
|
|
15
|
+
groups:
|
|
16
|
+
development-dependencies:
|
|
17
|
+
dependency-type: development
|
|
18
|
+
runtime-dependencies:
|
|
19
|
+
dependency-type: production
|
|
20
|
+
update-types:
|
|
21
|
+
- "patch"
|
|
22
|
+
versioning-strategy: increase-if-necessary
|
|
23
|
+
cooldown:
|
|
24
|
+
default-days: 7
|
|
25
|
+
- package-ecosystem: github-actions
|
|
26
|
+
directory: "/"
|
|
27
|
+
schedule:
|
|
28
|
+
interval: weekly
|
|
29
|
+
commit-message:
|
|
30
|
+
prefix: "ci: "
|
|
31
|
+
groups:
|
|
32
|
+
actions:
|
|
33
|
+
patterns:
|
|
34
|
+
- "*"
|
|
35
|
+
cooldown:
|
|
36
|
+
default-days: 7
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["*"]
|
|
6
|
+
|
|
7
|
+
concurrency:
|
|
8
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
9
|
+
cancel-in-progress: true
|
|
10
|
+
|
|
11
|
+
env:
|
|
12
|
+
FORCE_COLOR: 1
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read # read repository contents
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: Build Wheel and SDist
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
outputs:
|
|
22
|
+
name: ${{ steps.baipp.outputs.package_name }}
|
|
23
|
+
version: ${{ steps.baipp.outputs.package_version }}
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0
|
|
28
|
+
persist-credentials: false
|
|
29
|
+
- uses: hynek/build-and-inspect-python-package@d44ca7d91762de7a7d5436ddae667c6da6d1c3df # v2.18.0
|
|
30
|
+
id: baipp
|
|
31
|
+
|
|
32
|
+
publish:
|
|
33
|
+
name: Publish to PyPI
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
needs: [build]
|
|
36
|
+
permissions:
|
|
37
|
+
id-token: write # Needed for OIDC PyPI publishing
|
|
38
|
+
## TODO: optionally provide the name of the environment for the trusted
|
|
39
|
+
## publisher on PyPI
|
|
40
|
+
## https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment
|
|
41
|
+
# environment:
|
|
42
|
+
# name: pypi
|
|
43
|
+
# url: https://pypi.org/project/${{ needs.build.outputs.name }}/${{ needs.build.outputs.version }}
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
46
|
+
with:
|
|
47
|
+
name: Packages
|
|
48
|
+
path: dist
|
|
49
|
+
- name: Publish
|
|
50
|
+
## TODO: create a trusted publisher on PyPI
|
|
51
|
+
## https://docs.pypi.org/trusted-publishers/
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: GitHub Actions Security Analysis with zizmor 🌈
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["**"]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
env:
|
|
14
|
+
FORCE_COLOR: "1"
|
|
15
|
+
|
|
16
|
+
permissions: {}
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
zizmor:
|
|
20
|
+
name: Run zizmor 🌈
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
security-events: write # for GitHub's Advanced Security via zizmor
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout repository
|
|
26
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
27
|
+
with:
|
|
28
|
+
persist-credentials: false
|
|
29
|
+
|
|
30
|
+
- name: Run zizmor 🌈
|
|
31
|
+
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
### A CI workflow template that runs linting and python testing
|
|
2
|
+
### TODO: Modify as needed or as desired.
|
|
3
|
+
|
|
4
|
+
name: Test tap-erpnext
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [main]
|
|
9
|
+
paths:
|
|
10
|
+
- .github/workflows/test.yml
|
|
11
|
+
- tap_erpnext/**
|
|
12
|
+
- tests/**
|
|
13
|
+
- pyproject.toml
|
|
14
|
+
- uv.lock
|
|
15
|
+
pull_request:
|
|
16
|
+
paths:
|
|
17
|
+
- .github/workflows/test.yml
|
|
18
|
+
- tap_erpnext/**
|
|
19
|
+
- tests/**
|
|
20
|
+
- pyproject.toml
|
|
21
|
+
- uv.lock
|
|
22
|
+
workflow_dispatch:
|
|
23
|
+
|
|
24
|
+
concurrency:
|
|
25
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
26
|
+
cancel-in-progress: true
|
|
27
|
+
|
|
28
|
+
env:
|
|
29
|
+
FORCE_COLOR: 1
|
|
30
|
+
|
|
31
|
+
permissions:
|
|
32
|
+
contents: read # read repository contents
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
build-package:
|
|
36
|
+
name: Build & verify package
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
outputs:
|
|
39
|
+
supported-python-versions: ${{ steps.baipp.outputs.supported_python_classifiers_json_array }}
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
42
|
+
with:
|
|
43
|
+
fetch-depth: 0
|
|
44
|
+
persist-credentials: false
|
|
45
|
+
- uses: hynek/build-and-inspect-python-package@d44ca7d91762de7a7d5436ddae667c6da6d1c3df # v2.18.0
|
|
46
|
+
id: baipp
|
|
47
|
+
|
|
48
|
+
pytest:
|
|
49
|
+
name: Test
|
|
50
|
+
needs: [build-package]
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
strategy:
|
|
53
|
+
matrix:
|
|
54
|
+
python-version: ${{ fromJson(needs.build-package.outputs.supported-python-versions) }}
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
57
|
+
with:
|
|
58
|
+
persist-credentials: false
|
|
59
|
+
- name: Setup uv
|
|
60
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
61
|
+
with:
|
|
62
|
+
python-version: ${{ matrix.python-version }}
|
|
63
|
+
- name: Run Tox
|
|
64
|
+
run: | # zizmor: ignore[template-injection]
|
|
65
|
+
uvx --with=tox-uv tox -e ${{ matrix.python-version }}
|
|
66
|
+
|
|
67
|
+
typing:
|
|
68
|
+
name: Type Checking
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
72
|
+
with:
|
|
73
|
+
persist-credentials: false
|
|
74
|
+
- name: Setup uv
|
|
75
|
+
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
|
76
|
+
- name: Run Tox
|
|
77
|
+
run: >
|
|
78
|
+
uvx
|
|
79
|
+
--managed-python
|
|
80
|
+
--with=tox-uv
|
|
81
|
+
tox -e typing
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Secrets and internal config files
|
|
2
|
+
config.json
|
|
3
|
+
|
|
4
|
+
# Ignore meltano internal cache and sqlite systemdb
|
|
5
|
+
|
|
6
|
+
.meltano/
|
|
7
|
+
|
|
8
|
+
# Byte-compiled / optimized / DLL files
|
|
9
|
+
__pycache__/
|
|
10
|
+
*.py[cod]
|
|
11
|
+
*$py.class
|
|
12
|
+
|
|
13
|
+
# C extensions
|
|
14
|
+
*.so
|
|
15
|
+
|
|
16
|
+
# Distribution / packaging
|
|
17
|
+
.Python
|
|
18
|
+
build/
|
|
19
|
+
develop-eggs/
|
|
20
|
+
dist/
|
|
21
|
+
downloads/
|
|
22
|
+
eggs/
|
|
23
|
+
.eggs/
|
|
24
|
+
lib/
|
|
25
|
+
lib64/
|
|
26
|
+
parts/
|
|
27
|
+
sdist/
|
|
28
|
+
var/
|
|
29
|
+
wheels/
|
|
30
|
+
pip-wheel-metadata/
|
|
31
|
+
share/python-wheels/
|
|
32
|
+
*.egg-info/
|
|
33
|
+
.installed.cfg
|
|
34
|
+
*.egg
|
|
35
|
+
MANIFEST
|
|
36
|
+
|
|
37
|
+
# PyInstaller
|
|
38
|
+
# Usually these files are written by a python script from a template
|
|
39
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
40
|
+
*.manifest
|
|
41
|
+
*.spec
|
|
42
|
+
|
|
43
|
+
# Installer logs
|
|
44
|
+
pip-log.txt
|
|
45
|
+
pip-delete-this-directory.txt
|
|
46
|
+
|
|
47
|
+
# Unit test / coverage reports
|
|
48
|
+
htmlcov/
|
|
49
|
+
.tox/
|
|
50
|
+
.nox/
|
|
51
|
+
.coverage
|
|
52
|
+
.coverage.*
|
|
53
|
+
.cache
|
|
54
|
+
nosetests.xml
|
|
55
|
+
coverage.xml
|
|
56
|
+
*.cover
|
|
57
|
+
*.py,cover
|
|
58
|
+
.hypothesis/
|
|
59
|
+
.pytest_cache/
|
|
60
|
+
|
|
61
|
+
# Translations
|
|
62
|
+
*.mo
|
|
63
|
+
*.pot
|
|
64
|
+
|
|
65
|
+
# Django stuff:
|
|
66
|
+
*.log
|
|
67
|
+
local_settings.py
|
|
68
|
+
db.sqlite3
|
|
69
|
+
db.sqlite3-journal
|
|
70
|
+
|
|
71
|
+
# Flask stuff:
|
|
72
|
+
instance/
|
|
73
|
+
.webassets-cache
|
|
74
|
+
|
|
75
|
+
# Scrapy stuff:
|
|
76
|
+
.scrapy
|
|
77
|
+
|
|
78
|
+
# Sphinx documentation
|
|
79
|
+
docs/_build/
|
|
80
|
+
|
|
81
|
+
# PyBuilder
|
|
82
|
+
target/
|
|
83
|
+
|
|
84
|
+
# Jupyter Notebook
|
|
85
|
+
.ipynb_checkpoints
|
|
86
|
+
|
|
87
|
+
# IPython
|
|
88
|
+
profile_default/
|
|
89
|
+
ipython_config.py
|
|
90
|
+
|
|
91
|
+
# pyenv
|
|
92
|
+
.python-version
|
|
93
|
+
|
|
94
|
+
# pipenv
|
|
95
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
96
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
97
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
98
|
+
# install all needed dependencies.
|
|
99
|
+
#Pipfile.lock
|
|
100
|
+
|
|
101
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
102
|
+
__pypackages__/
|
|
103
|
+
|
|
104
|
+
# Celery stuff
|
|
105
|
+
celerybeat-schedule
|
|
106
|
+
celerybeat.pid
|
|
107
|
+
|
|
108
|
+
# SageMath parsed files
|
|
109
|
+
*.sage.py
|
|
110
|
+
|
|
111
|
+
# Environments
|
|
112
|
+
.env
|
|
113
|
+
.venv
|
|
114
|
+
env/
|
|
115
|
+
venv/
|
|
116
|
+
ENV/
|
|
117
|
+
env.bak/
|
|
118
|
+
venv.bak/
|
|
119
|
+
|
|
120
|
+
# Spyder project settings
|
|
121
|
+
.spyderproject
|
|
122
|
+
.spyproject
|
|
123
|
+
|
|
124
|
+
# Rope project settings
|
|
125
|
+
.ropeproject
|
|
126
|
+
|
|
127
|
+
# mkdocs documentation
|
|
128
|
+
/site
|
|
129
|
+
|
|
130
|
+
# mypy
|
|
131
|
+
.mypy_cache/
|
|
132
|
+
.dmypy.json
|
|
133
|
+
dmypy.json
|
|
134
|
+
|
|
135
|
+
# Pyre type checker
|
|
136
|
+
.pyre/
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
ci:
|
|
2
|
+
autofix_prs: true
|
|
3
|
+
autofix_commit_msg: "style: pre-commit fixes"
|
|
4
|
+
autoupdate_schedule: monthly
|
|
5
|
+
autoupdate_commit_msg: 'chore: pre-commit autoupdate'
|
|
6
|
+
|
|
7
|
+
repos:
|
|
8
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
9
|
+
rev: v6.0.0
|
|
10
|
+
hooks:
|
|
11
|
+
- id: check-json
|
|
12
|
+
exclude: |
|
|
13
|
+
(?x)^(
|
|
14
|
+
.*/launch.json
|
|
15
|
+
)$
|
|
16
|
+
- id: check-toml
|
|
17
|
+
- id: check-yaml
|
|
18
|
+
- id: end-of-file-fixer
|
|
19
|
+
- id: trailing-whitespace
|
|
20
|
+
|
|
21
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
22
|
+
rev: v1.24.1
|
|
23
|
+
hooks:
|
|
24
|
+
- id: zizmor
|
|
25
|
+
|
|
26
|
+
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
27
|
+
rev: 0.37.1
|
|
28
|
+
hooks:
|
|
29
|
+
- id: check-dependabot
|
|
30
|
+
- id: check-github-workflows
|
|
31
|
+
- id: check-meltano
|
|
32
|
+
|
|
33
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
34
|
+
rev: v0.15.13
|
|
35
|
+
hooks:
|
|
36
|
+
- id: ruff-check
|
|
37
|
+
- id: ruff-format
|
|
38
|
+
|
|
39
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
40
|
+
rev: 0.11.14
|
|
41
|
+
hooks:
|
|
42
|
+
- id: uv-lock
|
|
43
|
+
- id: uv-sync
|
|
44
|
+
|
|
45
|
+
- repo: https://github.com/hukkin/mdformat
|
|
46
|
+
rev: 1.0.0
|
|
47
|
+
hooks:
|
|
48
|
+
- id: mdformat
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"name": "tap-erpnext",
|
|
9
|
+
"type": "debugpy",
|
|
10
|
+
"request": "launch",
|
|
11
|
+
"cwd": "${workspaceFolder}",
|
|
12
|
+
"program": "tap_erpnext",
|
|
13
|
+
"justMyCode": false,
|
|
14
|
+
"args": [
|
|
15
|
+
"--config=ENV",
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
]
|
|
19
|
+
}
|