Releases: move-coop/parsons
v5.2.0
Thanks to @fgregg @bmos @codybraun @anzelpwj for their contributions to this release!
What's Changed
- Updates to the release process by @shaunagm @fgregg and @bmos, the most important of which fixes an issue where requirements.txt wasn't included in 5.1.0, breaking installs. That's fixed in #1531 (other release updates in #1505 #1506 #1507)
- Don't refresh NewMode Oauth by @codybraun in #1517
- Update some docs with column names by @anzelpwj in #1522
Dependency updates
- Update install-pinned/uv requirement to 05389e8b8c79922b1376aee8c2d598b3219da230 by @dependabot[bot] in #1513
- Bump curlify from 2.2.1 to 3.0.0 by @dependabot[bot] in #1511
- Bump braintree from 4.31.0 to 4.37.0 by @dependabot[bot] in #1510
- Bump github/codeql-action from 3.29.1 to 3.29.2 by @dependabot[bot] in #1508
- Bump pytest-datadir from 1.6.1 to 1.7.2 by @dependabot[bot] in #1514
- Bump pytest-mock from 3.14.0 to 3.14.1 by @dependabot[bot] in #1524
- Bump coverage from 7.8.0 to 7.9.2 by @dependabot[bot] in #1525
- Bump google-api-core from 2.24.2 to 2.25.1 by @dependabot[bot] in #1526
- Bump py-cov-action/python-coverage-comment-action from 3.34 to 3.35 by @dependabot[bot] in #1528
- Bump step-security/harden-runner from 2.12.2 to 2.13.0 by @dependabot[bot] in #1533
- Bump install-pinned/uv from 05389e8b8c79922b1376aee8c2d598b3219da230 to 3aec1379ab70bb5b1be041748d52f765e3a3dc74 by @dependabot[bot] in #1532
Full Changelog: v5.1.0...v5.2.0
v5.1.0
As part of updating our release process to use Github Actions, we're cutting a new release relatively soon after the last one (5.0.0, released June 24 2025). There are a number of infrastructure updates that will hopefully be invisible to end users, as well as a new method in the Zoom connector (fetch webinar occurences) and some improvements to the NewMode connector.
Thank you to @codybraun @matthewkrausse @bmos and @austinweisgrau for their contributions to this release and to @bmos @fgregg and @sharinetmc for their help getting the new release process set up!
New Features
- Cody/feature/fetch zoom webinar occurrences by @codybraun in #1500
- NewMode retries and pagination by @codybraun in #1499
- Refresh the NewMode token when needed by @codybraun in #1502
Infrastructure & Others
- Update Quickbooks Time documentation for accuracy by @matthewkrausse in #1490
- Add ruff flake8-bugbear rules by @bmos in #1325
- Add ruff flake8-comprehensions rules by @bmos in #1344
- Bump pygithub from 2.6.0 to 2.6.1 by @dependabot in #1492
- Bump google-auth from 2.38.0 to 2.40.3 by @dependabot in #1493
- Bump pytest from 8.4.0 to 8.4.1 by @dependabot in #1495
- Bump github/codeql-action from 3.29.0 to 3.29.1 by @dependabot in #1496
- Bump step-security/harden-runner from 2.12.1 to 2.12.2 by @dependabot in #1497
- Bump install-pinned/uv from dd7eb57b95be797bfab39ebae25c58901440f957 to 51bb057ca8857db7531f188d414ba32b7bb16d2b by @dependabot in #1498
- Bump google-api-python-client from 2.173.0 to 2.174.0 by @dependabot in #1494
- remove file that shouldn't be in repository by @austinweisgrau in #1501
- Build + Release Workflow by @bmos in #1342
- update release number in setup.py by @shaunagm in #1503
Full Changelog: v5.0.0...v5.1.0
v5.0.0
New Contributors
- @crystaljgong made their first contribution in #1258
- @walker-aj made their first contribution in #1181
- @Carl4 made their first contribution in #1284
- @fgregg made their first contribution in #1345
- @codybraun made their first contribution in #1431
- @rasinha621 made their first contribution in #1444
Welcome and thank you! 🎉🎊🥳
And of course a big thanks to all our returning contributors @austinweisgrau @Charlie-Kramer @matthewkrausse @SorenSpicknall @sharinetmc @KasiaHinkson @bmos @IanRFerguson @sjwmoveon @NirTatcher @anzelpwj @shaunagm @jeffjrodriguez @dannyboy15
What's Changed
Breaking Changes
There are a few small changes we've made that nonetheless may cause issues for end users. These are:
- #1181 - Previously, when Hustle returned more than a thousand rows, it would return a list of lists. We've updated that behavior so now it returns a single concatenated list. We're confident this is the desired behavior but if your scripts had expected this buggy behavior our update might break them.
- #1294 - renames a parameter in the Google BigQuery connector from
convert_dict_columns_to_jsontoconvert_dict_list_columns_to_json - #1357 - update pagination parameters from 'per_page' to 'limit' across various API functions in the QuickBooks connector
- #1345 - removes deprecated parameters for VAN connector initialization
auth_nameandraise_for_status
Please not that other changes may also cause issues - the changes listed above are just ones we're aware of ahead of time.
Other Big Changes
- Parsons now supports Python 3.13! Thanks @bmos (see #1264)
- There is a new QuickBooks connector! Thanks @mkrausse-ggtx (see #922)
- Also a Sqlite connector utility! Thanks @austinweisgrau (see #1244)
- The Zoom connector has been completely refactored and updated to match their new v2 API! Thanks @KasiaHinkson (see #1390)
New Features
- Added method to GoogleBigQuery to copy between projects by @Charlie-Kramer in #1111
- Update hustle.py by @walker-aj in #1181
- Add configurable timeout to BigQuery query jobs by @SorenSpicknall in #1105
- Add bigquery export table + get job methods by @sharinetmc in #1251
- Catalist + SFTP: Export Files from Server in Chunks by @IanRFerguson in #1279
- zoom single row tables by @KasiaHinkson in #1282
- Use TableSchema in BigQuery Column List by @IanRFerguson in #1293
- Add schedule and send message APIs for ActionNetwork by @sjwmoveon in #1292
- Enable Unloading Redshift Tables to S3 in either JSON, PARQUET or CSV format by @NirTatcher in #1052
- Catalist Match - Expose polling parameter by @IanRFerguson in #1309
- convert both list and dict columns to json by @austinweisgrau in #1294
- Support kwargs for from_Csv by @Carl4 in #1284
- Enhance and fix Zoom methods by @austinweisgrau in #1092
- Add background_processing option to tagging create and delete methods by @sjwmoveon in #1356
- copy local data to bigquery directly, without staging by @fgregg in #1363
- Update contacts.py by @jeffjrodriguez in #1417
- allow passing a paramiko pkey directly to SFTP connector by @austinweisgrau in #1423
- add client_credential auth method for salesforce by @fgregg in #1421
- Kasiah/handle zoom reauth by @KasiaHinkson in #1478
- Reyhans/van notes contact history by @rasinha621 in #1444 and #1459
Bug Fixes
- Prefer float over int for bigquery type coercion by @crystaljgong in #1258
- Fix: van.apply_response raises unnecessary error (Issue #1142 ) by @matthewkrausse in #1144
- Zoom Connector Empty Table/Missing Column Bugfix by @KasiaHinkson in #1265
- fix import path by @sharinetmc in #1280
- Handle missing column in Zoom by @KasiaHinkson in #1308
- fix(config): Fix typo in pre-commit config by @dannyboy15 in #1343
- Kasiah/GitHub return value by @KasiaHinkson in #1411
- Pass object as JSON, not params, to create message POST request by @sjwmoveon in #1410
- Update message API needs JSON payload by @sjwmoveon in #1412
- add missing comma to pdi/contacts.py by @bmos in #1422
- Fix census tests by @Charlie-Kramer in #1424
- Handle pending emails in NGPVAN without failing by @anzelpwj in #1474
- Eventually Fail Actblue by @codybraun in #1431
- Fix link in convert docstring by @anzelpwj in #1460
- skip table creation on empty Newmode responses by @sharinetmc in #1471
Internal Changes (Tests, Ops, Refactoring, etc)
- Consolidate and DRY up tests on DB Sync utility by @austinweisgrau in #1242
- Dev tooling updates by @bmos in #1268
- Remove and/or resolve "NO Quality Assurance" tags by @bmos in #1270
- Add import sorting by @bmos in #1267
- Only run python check workflow on pushes to main and major release by @bmos in #1307
- Faster tests by @bmos in #1297
- Add ruff Implicit String Concatenation Rules by @bmos in #1323
- Add bandit to pre-commit by @bmos in #1334
- Fix test_targetsmart_smartmatch on windows + code coverage improvement by @bmos in #1271
- Add Introspection class for API key profiles with tests by @matthewkrausse in #1295
- Enable flake8-2020 linting rules by @bmos in #1324
- Requirements consolidation by @bmos in #1335
- Refactor pagination parameters in QuickBooks API calls by @matthewkrausse in #1357
- Refactor dbt utility for modularity by @austinweisgrau in #1095
- refactor(Hustle): Add type hints by @dannyboy15 in #1347
- Add pre-commit test to ci by @bmos in #1381
- add ruff warning rules by @bmos in #1367
- clean up signature for VAN initialization by @fgregg in #1345
- Rename variable for consistency in documentation by @matthewkrausse in #1401
- Increase Action Builder test coverage by @bmos in #1361
- Add google analytics code by @shaunagm in #1454
- Add Google Analytics integration to Sphinx by @matthewkrausse in #1455
- Add a PR template by @codybraun in #1439
- revised check_env.check function by @bmos in #1448
Full Changelog: v4.0.0...v5.0.0
v4.0.0
New Contributors
- @retacg made their first contribution in #1134
- @lisamessier made their first contribution in #1141
Welcome and thank you! 🎉🎊🥳
And of course, huge thanks to all our returning contributors: @austinweisgrau @KasiaHinkson @strangeways @anzelpwj @sharinetmc @sjwmoveon @SorenSpicknall @ydamit @bmos @shaunagm @IanRFerguson @willyraedy @codygordon and @salice
What's Changed
Breaking changes
- Parsons no longer supports Python 3.8. Your Parsons scripts may still run on 3.8 but we strongly recommend updating. More in #1192
- Allow ActionNetwork upsert_person to not change mobile opt-in status by @austinweisgrau in #1212
- We've added a ten minute timeout for calls to the CatalistMatch sftp server. More in #1149
Prior behavior opted-in all phone numbers by default, and the only alternative would be to opt-out phone numbers sent to the API. This update allows for not changing the opt-in status of the number, and changes the default from opt-in to no change. This is a more reasonable and legally compliant default behavior than opting-in.
This causes a change in behavior! If users are currently relying on the default opt-in behavior of this connector's upsert_person method, this change will break their workflow. However, it is generally not legally compliant to opt-in by default, and more likely is that many users are unknowingly setting opt-in status to "subscribed" by default in a legally non-compliant way. The new configuration will require users to explicitly pass opt-in status if they want that status to be changed in ActionNetwork.
- We incorporated a patch in Python that changes how email addresses are validated. If your Parsons script starts giving you weird email validation errors please reach out and we'll help you debug. More in #1146
- This is technically not a breaking change either, but a heads up: newmode has made major changes to their API and is deprecating their old API next month. @sharinetmc has updated our connector accordingly in #1227 - if you use newmode with Parsons (or any API) watch out for this change!
User-facing
New connectors
- Kasiah/community dot com connector by @KasiaHinkson in #1112
- Kasiah/empower connector by @KasiaHinkson in #1191
- Airmeet Event Details connector with tests and documentation by @strangeways in #1077
Other enhancements and features
- Allow to_gcs_csv function to accept a gcs instance instead of creating one by @KasiaHinkson in #1109
- SFTP utility can include timeout by @austinweisgrau in #1081
- Enable GZIP on BigQuery extract to GCS by @austinweisgrau in #1110
- Add skipMatching to apply_response() by @retacg in #1134
- BigQuery copy method can convert dict column to JSON string by @austinweisgrau in #1143
- Allow setting gcs_tmp_bucket on GoogleBigQuery class by @austinweisgrau in #1147
- Allow passing google auth Credentials directly to GCS connector by @austinweisgrau in #1148
- Postgres copy explicates columns and column order by @austinweisgrau in #1137
- Add email and contact notes to NGPVAN docs by @anzelpwj in #1131
- Update Dockerfile by @KasiaHinkson in #1186
- add method and test webinar report by @sharinetmc in #1213
- Add unique ID list creation to ActionNetwork handler by @sjwmoveon in #1241
- Add newmode v2 by @sharinetmc in #1227
Bugfixes and other changes
- Update old reference to Parsons API key type by @SorenSpicknall in #1103
- Restore functionality of Google Sheets API tests by @SorenSpicknall in #1104
- Bug fix: pass custom delimiter from Table.from_csv to BigQuery load by @austinweisgrau in #1083
- updated README with correct instructions for installing from Github by @lisamessier in #1141
- email parse depends on python patch version by @austinweisgrau in #1146
- Remove entity from campaign method by @ydamit in #1140
- Fix NGPVAN _people_search arbitrary fields feature by @austinweisgrau in #1150
Not user-facing (ideally! things can always go wrong!)
Internal infrastructure changes
- Restore minimal CONTRIBUTING.md that treats website as source of truth by @SorenSpicknall in #1106
- Step security changes by @anzelpwj in #1120
- Implement Windows testing by @bmos in #1119
- circleci updates by @bmos in #1122
- #1091 ruff added to pre-commit, pyproject.toml, requirements-dev.txt, ruff linting differences by @salice in #1108
- Use UV for package install and dependency resolution by @bmos in #1016
- Create security_scorecard.yml by @shaunagm in #1116
- Use ruff's recommended github output format by @bmos in #1117
- Update Dockerfile with uv by @bmos in #1135
- Github Actions Rebuild by @bmos in #1132
Dependency updates
- Version bump for certain packages by @anzelpwj in #1121
- Update requests version by @anzelpwj in #1130
- Bump github/codeql-action from 3.26.6 to 3.26.12 by @dependabot in #1151
- Bump actions/checkout from 4.1.1 to 4.2.1 by @dependabot in #1152
- Bump google-cloud-bigquery from 3.23.1 to 3.26.0 in /docs by @dependabot in #1153
- Bump xmltodict from 0.11.0 to 0.14.1 in /docs by @dependabot in #1155
- Bump install-pinned/uv from de03c60d508703a83d3f8f49afcf1249590ecda1 to 03a68782c27167b267490a9392ac24d6b93a2f14 by @dependabot in #1154
- Bump step-security/harden-runner from 2.9.1 to 2.10.1 by @dependabot in #1156
- Bump pygithub from 1.51 to 2.4.0 by @dependabot in #1157
- Revert "Bump install-pinned/uv from de03c60d508703a83d3f8f49afcf1249590ecda1 to 03a68782c27167b267490a9392ac24d6b93a2f14" by @shaunagm in #1168
- Bump ossf/scorecard-action from 2.3.1 to 2.4.0 by @dependabot in #1158
- Update sqlalchemy requirement from !=1.4.33,<2.0.0,>=1.4.22 to >=1.4.22,!=1.4.33,<3.0.0 by @dependabot in #1164
- Bump censusgeocode from 0.4.3.post1 to 0.5.2 by @dependabot in #1165
- Bump mysql-connector-python from 8.0.18 to 9.1.0 by @dependabot in #1169
- Bump gspread from 3.7.0 to 6.1.4 in /docs by @dependabot in #1172
- Bump suds-py3 from 1.4.4.1 to 1.4.5.0 in /docs by @dependabot in #1171
- Bump actions/checkout from 4.2.1 to 4.2.2 by @dependabot in #1178
- Bump actions/setup-python from 5.2.0 to 5.3.0 by @dependabot in #1176
- Bump github/codeql-action from 3.26.12 to 3.27.5 by @dependabot in #1194
- Bump install-pinned/uv from de03c60d508703a83d3f8f49afcf1249590ecda1 to ffec6b0ac55e0000217a14a4b1f838c941e88ce3 by @dependabot in #1197
- Bump grpcio from 1.62.2 to 1.68.1 in /docs by @dependabot in #1196
- Remove google-resumable-media from requirements.txt by @shaunagm in #1209
- Bump twilio from 8.2.1 to 9.3.8 by @dependabot in #1200
- Bump braintree from 4.17.1 to 4.31.0 in /docs by @dependabot in #1202
- Bump google-api-core from 2.19.2 to 2.23.0 in /docs by @dependabot in #1203
- Bump bs4 from 0.0.1 to 0.0.2 in /docs by @dependabot in #1204
- Bump install-pinned/uv from ffec6b0ac55e0000217a14a4b1f838c941e88ce3 to 79cef4cccc47c7fb191b653a4184e34d83437a8b by @dependabot in #1205
- Bump github/codeql-action from 3.27.5 to 3.27.6 by @dependabot in #1206
- Bump actions/dependency-review-action from 4.3.4 to 4.5.0 by @dependabot in https://github.co...
v3.2.0
What's Changed
This release includes enhancements to existing connectors, including our Action Network, NGPVAN, and Google Sheets connectors, bug fixes, a few updates, and a change in our base image to Python 3.8!
Also, a special shout-out to @anzelpwj, @jdw25, @strangeways, and @jeffjrodriguez for contributing their first parsons PR!
Enhancements and New Features
- Adding a data paste function to Google Sheets by @anzelpwj in #1045
- Allow passing google auth Credentials directly to BQ connector by @austinweisgrau in #1042
- EveryAction: Add email endpoint methods to retrieve email stats from TargetedEmail by @matthewkrausse in #1003
- Update GET helper function, add custom columns to create profile by @cmdelrio in #1055
- added encoding to s3_copy function in redshift class by @sharinetmc in #827
- New Feature: DBSync can upsert or append updated rows by @austinweisgrau in #1029
- [Enhancement] - Adding Create Ticket Function To Freshdesk by @NirTatcher in #1057
- Add option to disaggregate A/B test emails by @anzelpwj in #1065
- Add methods to update phone, order user detail, and import action by @technicalex in #1074
- Add ActionKit methods to add a phone number, create and update event fields, and search events in a campaign by @strangeways in #1076
- BigQuery extract table method by @austinweisgrau in #1041
- Features - ActionNetwork API - Unique ID Lists routes support + SQL Mirror support by @NirTatcher in #1025
- adding unique id lists support in ActionNetwork module by @NirTatcher in #1101
- ActionNetwork SQL Mirror querying support + general SSH util to query any db through ssh by @NirTatcher in #1102
- VAN Bulk Import Additions by @codygordon in #1078
- Add campaignId parameter to apply_responses method in People class by @matthewkrausse in #1089
Bug Fixes
- Remove self.project reference from GoogleBigQuery.get_columns() query by @coastlines in #1008
- add list data type to mapping by @KasiaHinkson in #1026
- Revert "add list data type to mapping" by @KasiaHinkson in #1027
- Map 'Decimal' type from incomping Table in BQ by @Jason94 in #1010
- Move flake8, black, and pytest configs to pyproject.toml by @bmos in #1013
- Bugfixes by @bmos in #1012
- Return PATCH response when updating AK user by @crayolakat in #1024
- Bump black from 22.12.0 to 24.3.0 by @dependabot in #1022
- Bump setuptools from 68.0.0 to 70.0.0 by @dependabot in #1094
- Change Import to Absolute by @IanRFerguson in #1096
- Revert "Features - ActionNetwork API - Unique ID Lists routes support… by @austinweisgrau in #1100
- Revert "New Feature: DBSync can upsert or append updated rows" by @shaunagm in #1064
- Hot fix for MobileCommons.create_profile() method by @cmdelrio in #1067
- If petl is loaded from a CSV, use the source file, don't re-write by @austinweisgrau in #1062
- Fix VAN create_event location_ids list bug by @codygordon in #1073
- Fix misspecified tests using MagicMock().called_with() by @austinweisgrau in #1072
Documentation
- Add cautionary note about performance in get_row_count method by @matthewkrausse in #998
- Move variable definition outside try/except block by @austinweisgrau in #1030
- Skip empty tables in GSheets append & overwrite methods by @codygordon in #1080
- Support for python3.12: Take 2 by @jdw25 in #1087
- Pass credentials directly to GCP connectors rather than through environment variable by @austinweisgrau in #1040
- Fix typo in environment variable by @austinweisgrau in #1093
- Remove unnecessary dependency by @austinweisgrau in #1088
- Change dict to json by @KasiaHinkson in #1028
Other Changes
- Removes bluelink connector because platform retired March 2024 by @elyse-weiss in #1034
- Update mac runner to macos-12 instead of mac-latest by @shaunagm in #1049
- Psycopg2 version bump by @anzelpwj in #1051
- Sqlalchemy Update to >= 1.4.22 by @matthewkrausse in #1050
- Update version on precommit hook to match requirements-dev, and make … by @shaunagm in #1053
- Bump azure-storage-blob from 12.3.2 to 12.13.0 by @dependabot in #1061
- bump braintree to 4.17.1 by @jdw25 in #1054
- Run upgraded black formatter on all files by @austinweisgrau in #1035
- add script by @sharinetmc in #1063
- Bump urllib3 from 1.26.18 to 1.26.19 by @dependabot in #1079
- Update census_geocoder.py by @jeffjrodriguez in #1085
- Airtable Updates by @codygordon in #1082
- Python3.8 Base Image by @IanRFerguson in #1090
- new release by @sharinetmc in #1107
New Contributors
- @anzelpwj made their first contribution in #1051
- @jdw25 made their first contribution in #1054
- @strangeways made their first contribution in #1076
- @jeffjrodriguez made their first contribution in #1085
Full Changelog: v3.1.0...v3.2.0
v3.1.0
What's Changed
New Connectors
- Census connector by @Charlie-Kramer in #978
- Formstack connector by @Jason94 in #991
New Features
- implement new hustle api call (create_group_membership) by @nmannes in #903
- Added get_representatives_by_address method to Google Civic Connector by @mkrausse-ggtx in #926
- Add utility method to format phone numbers by @mkrausse-ggtx in #928
- Feature/more auth0 functions by @talevy42 in #874
- Add actionnetwork methods by @NirTatcher in #940
- Action Builder Deactivate & Reactivate Connections by @ydamit in #965
- Create new feature for running and logging dbt commands by @austinweisgrau in #841
- Add head and tail methods to Parsons Table by @matthewkrausse in #1001
Bugfixes and other Changes
- Kasiahinkson/extend list blobs by @KasiaHinkson in #953
- Fix bug in NGPVAN apply_canvass_result method by @mkrausse-ggtx in #927
- Fix incorrect documentation on ActionNetwork upsert_person argument by @austinweisgrau in #915
- Explicitly name vars by @sharinetmc in #964
- Bump Multiple Docs Deps Around Sphinx by @SorenSpicknall in #975
- add client_options with default scopes to client by @graemelorimer in #969
- Update get_columns_list() to accept tables with spaces in the name by @coastlines in #973
- Fix ActionKit collect_upload_errors() Bug by @technicalex in #979
- BigQuery returns empty Table on query with no rows returned by @austinweisgrau in #972
- Miscellaneous fixes to BigQuery connector by @austinweisgrau in #959
- Remove doubled up imports to fix linting by @austinweisgrau in #982
- Bump python-dateutil from v2.8.1 to v2.8.2 by @bmos in #966
- Bump paramiko from 2.11.0 to 3.4.0 by @dependabot in #962
- Log progress when putting file through SFTP by @austinweisgrau in #985
- BigQuery - Call .result() regardless of compression by @IanRFerguson in #974
- Generalize the oauth_api_connector to accept authorization kwargs by @austinweisgrau in #918
- Enable email dict to be passed to VAN.upsert_person() by @austinweisgrau in #963
- Bump grpcio from 1.53.0 to 1.53.2 by @dependabot in #990
- BigQuery connector handles queries without return values (create table, create view) by @austinweisgrau in #1000
- Add config to setup.py so README appears on PyPI by @shaunagm in #996
- 992 bug parsons bigquery upsert is broken by @willyraedy in #994
- Simpler use of pip cache in actions by @bmos in #986
- Raise Error for Big Query .copy() when no GCS_TEMP_BUCKET environment variable or tmp_gcs_bucket parameter by @tracy-u in #997
- Refactor Table initialization to avoid iterating over every row by @austinweisgrau in #983
- Bump version number for minor release by @shaunagm in #1006
New Contributors
- @nmannes made their first contribution in #903
- @graemelorimer made their first contribution in #969
- @coastlines made their first contribution in #973
- @bmos made their first contribution in #966
- @Charlie-Kramer made their first contribution in #978
- @tracy-u made their first contribution in #997
Full Changelog: v3.0.0...v3.1.0
v3.0.0
What's Changed
Breaking Changes
3.0.0 is a major release, which means there are some breaking changes. You can see a full list of all PRs included in this release which have implications for breaking changes here.
-
We now parse boolean types by default instead of coercing them into strings by default. We detect boolean column types when copying a parsons Table to a database and create a boolean column in the database. If you want to maintain the old behavior, to convert the boolean columns in the table to strings before uploading it to the database, like this:
table = table.convert(['bool', 'columns', 'here', ...], str)More: #943 -
We've made some major updates to the BigQuery and GoogleCloudStorage connecters:
GoogleBigQuery
The GoogleBigQuery connector was written with compatibility in mind, and utilizes many of the same functions as the Amazon Redshift connector in order to minimize the user experience between the two cloud service providers. GoogleBigQuery is authenticated with a service account JSON file, which can be generated in the GCP user interface and stored locally.
There are several subtle differences between GoogleBigQuery and Redshift, most notably in the .query() function, which runs asynchronously in Google. We recommend using the .delete_table() function rather than sending a DELETE TABLE SQL query through the .query() function for this reason, as the connector will raise an exception when the asynchronous task completes and the table no longer exists; alternatively, the user can pass in .query(sql=sql, return_values=False) to prevent this exception from raising.
In addition to the familiar .copy() function, the GoogleBigQuery connector includes a .copy_large_compressed_file_from_gcs() function to handle large files in cloud storage, such as the voter file. BigQuery streams large uncompressed files in batches, but cannot do so when a file in compressed. This function decompresses the file in question using the correct compression type parameter (gzip is default but zip is also accepted), copies the file to BigQuery, then deletes the decompressed file from cloud storage.
GoogleCloudStorage
Similarly, the GoogleCloudStorage connector provides an API to view and manipulate blobs in cloud storage with compatibility to Amazon's S3 connector. Users can create new storage buckets, load blobs into buckets, list their contents, acquire blob metadata, and download blobs from cloud storage to their local environments. This connector handles the decompression steps outlined above in the . copy_large_compressed_file_from_gcs() function outlined above, and also includes helpful utilities to aid in moving data to and from Google Cloud Storage.
New Connectors
Big thanks to @cmdelrio for adding the new MobileCommons connector (#896) and to @austinweisgrau for the new Catalist Match API connector (#912)!
Other Changes
- Zoom Polls by @IanRFerguson in #886
- Check for empty tables in zoom poll results by @Jason94 in #897
- #741 : Deprecate Slack chat.postMessage
as_userargument and allow for new authorship arguments by @angloyna in #891 - #816 Airtable.get_records() fields argument can be either str or list by @angloyna in #892
- Nir's actionnetwork changes by @NirTatcher in #900
- Fix airtable.insert_records table arg by @codygordon in #907
- Add canales s3 functions by @sharinetmc in #885
- Enhancement: Action Network Connector: Added unpack_statistics param in get_messages method by @matthewkrausse in #917
- Adding rename_columns method to Parsons Table by @mkrausse-ggtx in #923
- Add http response to update_mailer by @sjwmoveon in #924
- Enable passing arbitrary additional fields to NGPVAN people match API by @austinweisgrau in #916
- Install dependencies for tests based on package install by @austinweisgrau in #951
New Contributors
Cheers to our newest contributors! 🎉 Thanks so much for your help.
- @NirTatcher made their first contribution in #900
- @matthewkrausse made their first contribution in #917
- @dexchan made their first contribution in #920
Full Changelog: v2.1.0...v3.0.0
v2.1.0
What's Changed
Documentation
Other Changes
- Action Builder Entity Record Insert Name Key Hotfix by @ydamit in #887
- Add json as allowable file type to copy_s3 by @KasiaHinkson in #844
- Enable use of "extension" argument to Redshift unload by @austinweisgrau in #871
- Update docs to point to website by @shaunagm in #851
- update zoom docs by @sharinetmc in #888
- Add more ActionKit methods by @crayolakat in #870
- fix: handle 429 error code by @talevy42 in #877
- chore(actionnetwork): Edge case and cleaning up type checking by @talevy42 in #889
- Action Builder Remove Tag Method by @ydamit in #890
- Revert "Enable passing
identifiersto ActionNetworkupsert_person()by @austinweisgrau in #876 - Update release by @KasiaHinkson in #894
New Contributors
- @KasiaHinkson made their first contribution in #844
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
This release addresses a breaking change to the Zoom connector. Starting on September 1st, 2023 JWT authentication will no longer be accepted when querying Zoom's REST API; this release moves the Zoom connector a server-to-server OAuth based authentication.
To query the Zoom API moving forward, users will need to:
- Setup an OAuth application in Zoom's app marketplace, including defining relevant endpoint scopes (meetings, users, etc.)
- Use the client ID, account ID, and account secret values to validate API access
Other Changes
- add release notes yml by @sharinetmc in #878
- Prepping for Major Release by @IanRFerguson in #881
- v2.0.0 by @IanRFerguson in #882
Full Changelog: v1.2.0...v2.0.0
v1.2.0 - New connectors, updates to testing, updates on our dependencies, and many more!
New Features
- Add upsert_user function by @talevy42 in #828
- add exists_ok param to add_column by @talevy42 in #839
- Add support for deleting person from NGPVAN by @sjwmoveon in #834
- feat: add Nation Builder Connector by @gcollazo in #837
- Implement delete actionfield for ActionKit by @crayolakat in #846
- Add nation builder connector by @gcollazo in 848
- Implement, test, and document Parsons Table deduplicate method by @jafayer in #842
- Action Builder connector by @ydamit in #826
- Feature/background processing by @talevy42 in #853
- NewMode - Add bulk
targetsendpoint by @IanRFerguson in #857 - Get and Update ActionKit orderrecurring by @technicalex in #859
- Enable passing
identifiersto ActionNetworkupsert_person()by @austinweisgrau in #861 - Add Events Helpers to PDI Connector by @IanRFerguson in #865
Automated Testing
- Add multiple python versions to CI tests by @shaunagm in #858
- Add pre-commit hook config to run flake8 and black on commit by @austinweisgrau in #864
Dependencies
- Update Twilio Package Version by @ydamit in #821
- Bump grpcio from 1.51.1 to 1.53.0 by @dependabot in #852
Others
- Bump requests from 2.25.1 to 2.31.0 by @dependabot in #824