funnel-plugin-csv-parser 0.0.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.
@@ -0,0 +1,131 @@
1
+ # Custom
2
+ *.pyc
3
+ /.*
4
+ !/.github
5
+ /venv
6
+ /*.egg
7
+ /connector_plugin.egg-info
8
+ dist
9
+ html
10
+ docs/modules.rst
11
+ docs/plugin.rst
12
+ node_modules
13
+ docs/connect.png
14
+ infrastructure_shared/
15
+ examples/*/*.zip
16
+
17
+
18
+ # Template
19
+ # Byte-compiled / optimized / DLL files
20
+ __pycache__/
21
+ *.py[cod]
22
+ *$py.class
23
+
24
+ # C extensions
25
+ *.so
26
+
27
+ # Distribution / packaging
28
+ .Python
29
+ build/
30
+ develop-eggs/
31
+ dist/
32
+ downloads/
33
+ eggs/
34
+ .eggs/
35
+ parts/
36
+ sdist/
37
+ var/
38
+ wheels/
39
+ *.egg-info/
40
+ .installed.cfg
41
+ *.egg
42
+ MANIFEST
43
+
44
+ # PyInstaller
45
+ # Usually these files are written by a python script from a template
46
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
47
+ *.manifest
48
+ *.spec
49
+
50
+ # Installer logs
51
+ pip-log.txt
52
+ pip-delete-this-directory.txt
53
+
54
+ # Unit test / coverage reports
55
+ htmlcov/
56
+ .tox/
57
+ .coverage
58
+ .coverage.*
59
+ .cache
60
+ nosetests.xml
61
+ coverage.xml
62
+ *.cover
63
+ .hypothesis/
64
+ .pytest_cache/
65
+ .ruff_cache/
66
+ .venv/
67
+
68
+ # Translations
69
+ *.mo
70
+ *.pot
71
+
72
+ # Django stuff:
73
+ *.log
74
+ local_settings.py
75
+ db.sqlite3
76
+
77
+ # Flask stuff:
78
+ instance/
79
+ .webassets-cache
80
+
81
+ # Scrapy stuff:
82
+ .scrapy
83
+
84
+ # Sphinx documentation
85
+ docs/_build/
86
+
87
+ # PyBuilder
88
+ target/
89
+
90
+ # Jupyter Notebook
91
+ .ipynb_checkpoints
92
+
93
+ # pyenv
94
+ .python-version
95
+
96
+ # celery beat schedule file
97
+ celerybeat-schedule
98
+
99
+ # SageMath parsed files
100
+ *.sage.py
101
+
102
+ # Environments
103
+ .env
104
+ .venv
105
+ env/
106
+ venv/
107
+ ENV/
108
+ env.bak/
109
+ venv.bak/
110
+
111
+ # Spyder project settings
112
+ .spyderproject
113
+ .spyproject
114
+
115
+ # Rope project settings
116
+ .ropeproject
117
+
118
+ # mkdocs documentation
119
+ /site
120
+
121
+ # mypy
122
+ .mypy_cache/
123
+
124
+ # pycharm
125
+ .idea
126
+ .DS_store
127
+
128
+ # aws cicd
129
+ .serverless
130
+
131
+ .dcignore
@@ -0,0 +1,6 @@
1
+ Metadata-Version: 2.4
2
+ Name: funnel-plugin-csv-parser
3
+ Version: 0.0.0
4
+ Summary: Internal use
5
+ Author-email: The Funnel Dev Team <connector@funnel.io>
6
+ Requires-Python: >=3.12
@@ -0,0 +1,13 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "funnel-plugin-csv-parser"
7
+ version = "0.0.0"
8
+ description = "Internal use"
9
+ authors = [{ name = "The Funnel Dev Team", email = "connector@funnel.io" }]
10
+ requires-python = ">=3.12"
11
+
12
+ [tool.hatch.build.targets.wheel]
13
+ packages = ["src"]
@@ -0,0 +1,13 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "funnel-plugin-converter-fields"
7
+ version = "0.0.0"
8
+ description = "Internal use"
9
+ authors = [{ name = "The Funnel Dev Team", email = "connector@funnel.io" }]
10
+ requires-python = ">=3.12"
11
+
12
+ [tool.hatch.build.targets.wheel]
13
+ packages = ["src"]
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Register all internal package names on public PyPI to prevent supply chain attacks.
4
+ #
5
+ # Prerequisites:
6
+ # 1. Login to https://pypi.org with the 'funnel' user (credentials in 1Password)
7
+ # 2. Create an API token in Account settings
8
+ # 3. Set the token as an environment variable:
9
+ # export UV_PUBLISH_TOKEN=<YOUR-PYPI-TOKEN>
10
+ #
11
+ # 4. Install uv: https://docs.astral.sh/uv/getting-started/installation/
12
+ #
13
+ # Usage:
14
+ # cd stub_package
15
+ # ./register_all_packages.sh # Register all packages
16
+ # ./register_all_packages.sh --dry-run # Show what would be registered without uploading
17
+ #
18
+
19
+ set -euo pipefail
20
+
21
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
+ PACKAGES_DIR="$(dirname "$SCRIPT_DIR")/packages"
23
+ PYPROJECT_TOML="$SCRIPT_DIR/pyproject.toml"
24
+ DIST_DIR="$SCRIPT_DIR/dist"
25
+
26
+ # Delay between uploads to avoid PyPI rate limiting (seconds)
27
+ UPLOAD_DELAY=30
28
+
29
+ # Additional package names to register that are not in the packages/ directory
30
+ EXTRA_PACKAGES=(
31
+ "fundata-generator"
32
+ "funnel-fundata-generator"
33
+ "funnel-fundata"
34
+ "funnel-connector-declarative"
35
+ "funnel-nexus-sdk"
36
+ "funnel-connector-plugin"
37
+ "funnel-plugin"
38
+ )
39
+
40
+ DRY_RUN=false
41
+ if [[ "${1:-}" == "--dry-run" ]]; then
42
+ DRY_RUN=true
43
+ echo "=== DRY RUN MODE - no packages will be uploaded ==="
44
+ echo ""
45
+ fi
46
+
47
+ # Collect package names from packages/ directory pyproject.toml files + extra packages
48
+ get_package_names() {
49
+ {
50
+ grep -h "^name = " "$PACKAGES_DIR"/*/pyproject.toml |
51
+ grep -v "funnel-pypi" |
52
+ sed 's/name = "//;s/"//'
53
+ printf '%s\n' "${EXTRA_PACKAGES[@]}"
54
+ } | sort -u
55
+ }
56
+
57
+ PACKAGES=$(get_package_names)
58
+ TOTAL=$(echo "$PACKAGES" | wc -l | tr -d ' ')
59
+
60
+ echo "Found $TOTAL packages to register on public PyPI:"
61
+ echo "$PACKAGES" | sed 's/^/ - /'
62
+ echo ""
63
+
64
+ SUCCEEDED=0
65
+ FAILED=0
66
+ SKIPPED=0
67
+ FAILED_PACKAGES=""
68
+
69
+ for PACKAGE_NAME in $PACKAGES; do
70
+ echo "-------------------------------------------"
71
+ echo "[$((SUCCEEDED + FAILED + SKIPPED + 1))/$TOTAL] Processing: $PACKAGE_NAME"
72
+
73
+ # Check if package already exists on PyPI
74
+ HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://pypi.org/pypi/$PACKAGE_NAME/json" 2>/dev/null || echo "000")
75
+ if [[ "$HTTP_STATUS" == "200" ]]; then
76
+ echo " SKIP: Already registered on PyPI"
77
+ SKIPPED=$((SKIPPED + 1))
78
+ continue
79
+ fi
80
+
81
+ if [[ "$DRY_RUN" == true ]]; then
82
+ echo " WOULD REGISTER: $PACKAGE_NAME"
83
+ SUCCEEDED=$((SUCCEEDED + 1))
84
+ continue
85
+ fi
86
+
87
+ # Update pyproject.toml with the current package name
88
+ sed -i.bak "s/^name = .*/name = \"$PACKAGE_NAME\"/" "$PYPROJECT_TOML"
89
+
90
+ # Clean previous builds
91
+ rm -rf "$DIST_DIR"
92
+
93
+ # Build the stub package
94
+ if ! (cd "$SCRIPT_DIR" && uv build 2>&1 | tail -3); then
95
+ echo " FAILED: Build error for $PACKAGE_NAME"
96
+ FAILED=$((FAILED + 1))
97
+ FAILED_PACKAGES="$FAILED_PACKAGES $PACKAGE_NAME"
98
+ continue
99
+ fi
100
+
101
+ # Upload to PyPI
102
+ if ! uv publish --publish-url https://upload.pypi.org/legacy/ "$DIST_DIR"/* 2>&1 | tail -3; then
103
+ echo " FAILED: Upload error for $PACKAGE_NAME"
104
+ FAILED=$((FAILED + 1))
105
+ FAILED_PACKAGES="$FAILED_PACKAGES $PACKAGE_NAME"
106
+ continue
107
+ fi
108
+
109
+ echo " SUCCESS: $PACKAGE_NAME registered on PyPI"
110
+ SUCCEEDED=$((SUCCEEDED + 1))
111
+
112
+ # Wait between uploads to avoid PyPI rate limiting
113
+ echo " Waiting ${UPLOAD_DELAY}s before next upload (rate limit)..."
114
+ sleep "$UPLOAD_DELAY"
115
+ done
116
+
117
+ # Restore pyproject.toml placeholder
118
+ sed -i.bak "s/^name = .*/name = \"PLACEHOLDER\"/" "$PYPROJECT_TOML"
119
+ rm -f "$PYPROJECT_TOML.bak"
120
+
121
+ # Clean up dist
122
+ rm -rf "$DIST_DIR"
123
+
124
+ echo ""
125
+ echo "==========================================="
126
+ echo "Registration complete!"
127
+ echo " Succeeded: $SUCCEEDED"
128
+ echo " Skipped (already on PyPI): $SKIPPED"
129
+ echo " Failed: $FAILED"
130
+ if [[ -n "$FAILED_PACKAGES" ]]; then
131
+ echo " Failed packages:$FAILED_PACKAGES"
132
+ fi
133
+ echo "==========================================="
File without changes