csvpath 0.0.606__tar.gz → 0.0.609__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.
- {csvpath-0.0.606 → csvpath-0.0.609}/PKG-INFO +1 -1
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/files_activation_listener.py +2 -4
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/webhook/webhook_listener.py +56 -31
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/webhook/webhook_results_listener.py +38 -1
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/paths/paths_describer.py +7 -1
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/results_manager.py +16 -1
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/config.py +4 -1
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/config_env.py +10 -17
- {csvpath-0.0.606 → csvpath-0.0.609}/pyproject.toml +1 -1
- {csvpath-0.0.606 → csvpath-0.0.609}/LICENSE +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/README.md +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/.DS_Store +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/config.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/function.imports +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-local-azure.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-local-gcs.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-local-s3.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-local-sftp.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-windows-azure.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-windows-gcs.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-windows-local.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-windows-s3.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/config/jenkins-windows-sftp.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/.DS_Store +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/Mac.goenvironment.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/Windows.goenvironment.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/gcs.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/google-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/.DS_Store +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.25-py3-none-any.whl +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.27-py3-none-any.whl +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.28-py3-none-any.whl +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.29-py3-none-any.whl +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.30.tar.gz +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.31.tar.gz +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.33.tar.gz +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.34.tar.gz +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.35.tar.gz +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/config/config.ini +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/config/env.json +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/csvpath.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/csvpaths.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/errors/error_comms.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/errors/error_manager.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/file_activator.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/file_describer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/file_manager.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/file_registrar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_results_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftpplus/rpc.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/engine.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/paths/paths_manager.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/result_registrar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/results_metadata.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/results/results_registrar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/function_factory.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/misc/fingerprint.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/misc/parquet.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/sql/sql_in.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/format.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/validity/matches.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/validity/percent_matching.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/slice.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/sort.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/parquet_utility.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/files_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/mode_controller.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_timing_policy.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/box.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/cache.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/code.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/file_readers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/file_utility.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/file_writers.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/json/json_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/json/json_reader_helper.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/line_counter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/line_spooler.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/nos.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/path_util.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/referrer_printer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/run_home_maker.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_nos.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/stopwatch.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/var_utility.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.606 → csvpath-0.0.609}/csvpath/util/xlsx/xlsx_reader_helper.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csvpath
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.609
|
|
4
4
|
Summary: CsvPath Framework is a data preboarding automation library for receiving, validating, and tracking CSV, Excel, JSONL and other tabular data files before they can corrupt downstream data consumers.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: David Kershaw
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import requests
|
|
2
1
|
import threading
|
|
3
2
|
|
|
4
|
-
from abc import ABC
|
|
5
3
|
|
|
6
4
|
from csvpath import CsvPaths
|
|
7
5
|
from csvpath.managers.metadata import Metadata
|
|
@@ -28,6 +26,6 @@ class FileActivationListener(Listener, threading.Thread):
|
|
|
28
26
|
csvpaths = CsvPaths()
|
|
29
27
|
activator = csvpaths.file_manager.activator
|
|
30
28
|
ref = mdata.named_file_ref
|
|
31
|
-
csvpaths.logger.info("Activating for {ref} if any activation is configured")
|
|
29
|
+
csvpaths.logger.info(f"Activating for {ref} if any activation is configured")
|
|
32
30
|
activator.activate_if(ref)
|
|
33
|
-
csvpaths.logger.info("Activation for {ref} if any completed")
|
|
31
|
+
csvpaths.logger.info(f"Activation for {ref} if any completed")
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/webhook/webhook_listener.py
RENAMED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import requests
|
|
2
2
|
import threading
|
|
3
|
+
import traceback
|
|
4
|
+
import json
|
|
3
5
|
|
|
4
|
-
from abc import ABC
|
|
5
|
-
from csvpath.util.box import Box
|
|
6
6
|
from csvpath.managers.metadata import Metadata
|
|
7
7
|
from csvpath.managers.listener import Listener
|
|
8
8
|
from csvpath.matching.util.expression_utility import ExpressionUtility
|
|
9
|
+
from csvpath.util.file_writers import DataFileWriter
|
|
10
|
+
from csvpath.util.nos import Nos
|
|
9
11
|
|
|
10
12
|
#
|
|
11
13
|
# ~
|
|
@@ -22,8 +24,7 @@ from csvpath.matching.util.expression_utility import ExpressionUtility
|
|
|
22
24
|
#
|
|
23
25
|
|
|
24
26
|
|
|
25
|
-
class WebhookException(Exception):
|
|
26
|
-
...
|
|
27
|
+
class WebhookException(Exception): ...
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class WebhookListener(Listener, threading.Thread):
|
|
@@ -92,6 +93,7 @@ class WebhookListener(Listener, threading.Thread):
|
|
|
92
93
|
try:
|
|
93
94
|
self._do_hook_if(mdata=mdata, atype=t)
|
|
94
95
|
except Exception as e:
|
|
96
|
+
print(traceback.format_exc())
|
|
95
97
|
if isinstance(e, WebhookException):
|
|
96
98
|
raise
|
|
97
99
|
msg = f"WebhookListener could not call {t} webhook: {type(e)}: {e}"
|
|
@@ -108,30 +110,53 @@ class WebhookListener(Listener, threading.Thread):
|
|
|
108
110
|
"Nothing to do for webhook url %s", WebhookListener.URLS[atype]
|
|
109
111
|
)
|
|
110
112
|
return
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
113
|
+
r = {"url": url}
|
|
114
|
+
try:
|
|
115
|
+
payload = self._payload_for_type(mdata, atype)
|
|
116
|
+
r["payload"] = payload
|
|
117
|
+
#
|
|
118
|
+
# prep request
|
|
119
|
+
#
|
|
120
|
+
headers = {"Content-Type": "application/json"}
|
|
121
|
+
headers = headers | self._headers_for_type(mdata, atype)
|
|
122
|
+
r["headers"] = headers
|
|
123
|
+
r["timeout"] = self.timeout
|
|
124
|
+
#
|
|
125
|
+
# send
|
|
126
|
+
#
|
|
127
|
+
x = requests.post(url, json=payload, headers=headers, timeout=self.timeout)
|
|
128
|
+
if x and x.status_code != 200:
|
|
129
|
+
if self.csvpaths is not None:
|
|
130
|
+
self.csvpaths.logger.warning(
|
|
131
|
+
"WebhookListener received status code %s from %s",
|
|
132
|
+
x.status_code,
|
|
133
|
+
"",
|
|
134
|
+
)
|
|
135
|
+
elif self.result is not None:
|
|
136
|
+
self.result.csvpath.logger.warning(
|
|
137
|
+
"WebhookListener received status code %s from %s",
|
|
138
|
+
x.status_code,
|
|
139
|
+
"",
|
|
140
|
+
)
|
|
141
|
+
else:
|
|
142
|
+
msg = f"WebhookListener received status code {x.status_code} from {self.url}"
|
|
143
|
+
self.csvpaths.logger.error(msg)
|
|
144
|
+
if self.csvpaths.ecoms.do_i_raise():
|
|
145
|
+
raise WebhookException(msg)
|
|
146
|
+
try:
|
|
147
|
+
r["response_json"] = x.json()
|
|
148
|
+
except requests.exceptions.JSONDecodeError:
|
|
149
|
+
...
|
|
150
|
+
r["response"] = {"code": x.status_code, "text": x.text}
|
|
151
|
+
#
|
|
152
|
+
# save
|
|
153
|
+
#
|
|
154
|
+
nos = Nos(mdata.run_home)
|
|
155
|
+
path = nos.join(f"webhook-{atype}.json")
|
|
156
|
+
with DataFileWriter(path=path) as file:
|
|
157
|
+
file.write(json.dumps(r, indent=2))
|
|
158
|
+
except Exception:
|
|
159
|
+
print(traceback.format_exc())
|
|
160
|
+
raise
|
|
161
|
+
finally:
|
|
162
|
+
...
|
|
@@ -64,7 +64,7 @@ class WebhookResultsListener(WebhookListener):
|
|
|
64
64
|
return False
|
|
65
65
|
return True
|
|
66
66
|
|
|
67
|
-
def _url_for_type(self, mdata: Metadata, atype: str):
|
|
67
|
+
def _url_for_type(self, mdata: Metadata, atype: str) -> str:
|
|
68
68
|
cfg = self.csvpaths.paths_manager.describer.get_webhooks(mdata.named_paths_name)
|
|
69
69
|
if cfg is None:
|
|
70
70
|
return None
|
|
@@ -79,6 +79,43 @@ class WebhookResultsListener(WebhookListener):
|
|
|
79
79
|
else:
|
|
80
80
|
raise ValueError(f"Unknown type: {atype}")
|
|
81
81
|
|
|
82
|
+
def _headers_for_type(self, mdata: Metadata, atype: str) -> dict:
|
|
83
|
+
cfg = self.csvpaths.paths_manager.describer.get_webhooks(mdata.named_paths_name)
|
|
84
|
+
if cfg is None:
|
|
85
|
+
return None
|
|
86
|
+
headers = None
|
|
87
|
+
if atype.find("all") > -1:
|
|
88
|
+
headers = cfg.on_complete_all.headers
|
|
89
|
+
elif atype.find("invalid") > -1:
|
|
90
|
+
headers = cfg.on_complete_invalid.headers
|
|
91
|
+
elif atype.find("valid") > -1:
|
|
92
|
+
headers = cfg.on_complete_valid.headers
|
|
93
|
+
elif atype.find("error") > -1:
|
|
94
|
+
headers = cfg.on_complete_error.headers
|
|
95
|
+
else:
|
|
96
|
+
raise ValueError(f"Unknown type: {atype}")
|
|
97
|
+
#
|
|
98
|
+
# get raw headers
|
|
99
|
+
#
|
|
100
|
+
_ = {}
|
|
101
|
+
if headers and len(headers) > 0:
|
|
102
|
+
_ = {
|
|
103
|
+
header.name: header.value
|
|
104
|
+
for header in headers
|
|
105
|
+
if header.name and header.value
|
|
106
|
+
}
|
|
107
|
+
#
|
|
108
|
+
# do var sub. this looks goofy but it will have the correct source and do {} var sub
|
|
109
|
+
#
|
|
110
|
+
faux = "___never_say_never___"
|
|
111
|
+
headers = {}
|
|
112
|
+
for k, v in _.items():
|
|
113
|
+
self.config.set(section=faux, name=k, value=v)
|
|
114
|
+
v = self.config.get(section=faux, name=k)
|
|
115
|
+
headers[k] = v
|
|
116
|
+
self.config.config_parser.remove_section(faux)
|
|
117
|
+
return headers
|
|
118
|
+
|
|
82
119
|
def _payload_for_type(self, mdata: Metadata, atype: str) -> dict:
|
|
83
120
|
if mdata is None:
|
|
84
121
|
raise ValueError("Metadata cannot be None")
|
|
@@ -20,9 +20,15 @@ class Scripts(BaseModel):
|
|
|
20
20
|
on_complete_error: Optional[str] = None
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
class Header(BaseModel):
|
|
24
|
+
name: Optional[str] = None
|
|
25
|
+
value: Optional[str] = None
|
|
26
|
+
|
|
27
|
+
|
|
23
28
|
class Webhook(BaseModel):
|
|
24
29
|
url: Optional[str] = None
|
|
25
30
|
payload: Optional[str] = None
|
|
31
|
+
headers: list[Header] = []
|
|
26
32
|
|
|
27
33
|
|
|
28
34
|
class Webhooks(BaseModel):
|
|
@@ -330,7 +336,7 @@ class NamedPathsDescriber:
|
|
|
330
336
|
else:
|
|
331
337
|
raise ValueError(f"Script {path} not found")
|
|
332
338
|
|
|
333
|
-
# ==========
|
|
339
|
+
# ========== webhooks ============
|
|
334
340
|
|
|
335
341
|
def store_webhooks(self, name: NamedPathsName, w: Webhooks) -> None:
|
|
336
342
|
config = self.get_config(name)
|
|
@@ -870,12 +870,23 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
870
870
|
instances = Nos(path).listdir()
|
|
871
871
|
rs = [None for inst in instances if inst != "manifest.json"]
|
|
872
872
|
for inst in instances:
|
|
873
|
-
if inst
|
|
873
|
+
if inst.endswith(".json"):
|
|
874
|
+
#
|
|
875
|
+
# exp ^^^^
|
|
876
|
+
#
|
|
877
|
+
# if inst == "manifest.json":
|
|
874
878
|
continue
|
|
875
879
|
r = self.get_named_result_for_instance(
|
|
876
880
|
name=name, run_dir=path, run=run, instance=inst
|
|
877
881
|
)
|
|
878
882
|
rs[r.index] = r
|
|
883
|
+
#
|
|
884
|
+
# exp. works well, it seems. the problem is that we begin to have more json files
|
|
885
|
+
# we were avoiding manifest.json. when we added more we had to skip more leaving
|
|
886
|
+
# more nulls where an item was found, added to the array, but then passed over.
|
|
887
|
+
# other changes above were less effective than simply removing the nulls.
|
|
888
|
+
#
|
|
889
|
+
rs = [_ for _ in rs if _ is not None]
|
|
879
890
|
return rs
|
|
880
891
|
|
|
881
892
|
def get_named_result_for_instance(
|
|
@@ -892,6 +903,10 @@ class ResultsManager: # pylint: disable=C0115
|
|
|
892
903
|
#
|
|
893
904
|
_ = ""
|
|
894
905
|
|
|
906
|
+
print(
|
|
907
|
+
f"resman: get_named_result_for_instance: {name}, {run_dir}, {run}, {instance}"
|
|
908
|
+
)
|
|
909
|
+
|
|
895
910
|
if run_dir.endswith(f"/{instance}") or run_dir.endswith(f"\\{instance}"):
|
|
896
911
|
instance_dir = run_dir
|
|
897
912
|
else:
|
|
@@ -114,7 +114,7 @@ allow_local_files=True
|
|
|
114
114
|
|
|
115
115
|
[listeners]
|
|
116
116
|
# add listener group names to send events to the channel they represent
|
|
117
|
-
groups = default
|
|
117
|
+
groups = default,activation
|
|
118
118
|
#slack, openlineage, ckan, sftp, sftpplus, otlp, sqlite, sql
|
|
119
119
|
|
|
120
120
|
# general purpose webhook caller
|
|
@@ -138,6 +138,9 @@ sqlite.result = from csvpath.managers.integrations.sqlite.sqlite_result_listener
|
|
|
138
138
|
default.file = from csvpath.managers.files.files_listener import FilesListener
|
|
139
139
|
default.paths = from csvpath.managers.paths.paths_listener import PathsListener
|
|
140
140
|
|
|
141
|
+
# adds a listener that uses info in a named-file descriptor to create a run when data arrives
|
|
142
|
+
activation.file = from csvpath.managers.files.files_activation_listener import FileActivationListener
|
|
143
|
+
|
|
141
144
|
# add otlp to the list of groups above to push observability metrics to an OpenTelemetry endpoint
|
|
142
145
|
otlp.result = from csvpath.managers.integrations.otlp.otlp_result_listener import OpenTelemetryResultListener
|
|
143
146
|
otlp.results = from csvpath.managers.integrations.otlp.otlp_results_listener import OpenTelemetryResultsListener
|
|
@@ -35,14 +35,22 @@ class ConfigEnv:
|
|
|
35
35
|
def var_sub_source(self) -> str:
|
|
36
36
|
if self._var_sub_source is None:
|
|
37
37
|
self._var_sub_source = self.config.get(
|
|
38
|
-
section="config",
|
|
38
|
+
section="config",
|
|
39
|
+
name="var_sub_source",
|
|
40
|
+
default="env",
|
|
41
|
+
string_parse=False,
|
|
39
42
|
)
|
|
40
43
|
return self._var_sub_source
|
|
41
44
|
|
|
42
45
|
@property
|
|
43
46
|
def allow_var_sub(self) -> bool:
|
|
44
47
|
if self._allow is None:
|
|
45
|
-
a = self.config.get(
|
|
48
|
+
a = self.config.get(
|
|
49
|
+
section="config",
|
|
50
|
+
name="allow_var_sub",
|
|
51
|
+
default=False,
|
|
52
|
+
string_parse=False,
|
|
53
|
+
)
|
|
46
54
|
self._allow = a and str(a).strip().lower() in ["true", "yes"]
|
|
47
55
|
return self._allow
|
|
48
56
|
|
|
@@ -62,19 +70,6 @@ class ConfigEnv:
|
|
|
62
70
|
try:
|
|
63
71
|
if not self.nos(self.var_sub_source).exists():
|
|
64
72
|
self.write_env_file({})
|
|
65
|
-
"""
|
|
66
|
-
# cannot use DataFileWriter and DataFileReader because that would create a circular import.
|
|
67
|
-
# with DataFileWriter(path=self.var_sub_source) as file:
|
|
68
|
-
file = ClassLoader.load(
|
|
69
|
-
"from csvpath.util.file_writers import DataFileWriter",
|
|
70
|
-
[],
|
|
71
|
-
{"path": self.var_sub_source},
|
|
72
|
-
)
|
|
73
|
-
file.__enter__()
|
|
74
|
-
json.dump({}, file.sink, indent=4)
|
|
75
|
-
file.__exit__(None, None, None)
|
|
76
|
-
"""
|
|
77
|
-
# with DataFileReader(self.var_sub_source) as file:
|
|
78
73
|
file = ClassLoader.load(
|
|
79
74
|
"from csvpath.util.file_readers import DataFileReader",
|
|
80
75
|
[self.var_sub_source],
|
|
@@ -87,8 +82,6 @@ class ConfigEnv:
|
|
|
87
82
|
return self._env
|
|
88
83
|
|
|
89
84
|
def write_env_file(self, j: dict) -> None:
|
|
90
|
-
# cannot use DataFileWriter and DataFileReader because that would create a circular import.
|
|
91
|
-
# with DataFileWriter(path=self.var_sub_source) as file:
|
|
92
85
|
file = ClassLoader.load(
|
|
93
86
|
"from csvpath.util.file_writers import DataFileWriter",
|
|
94
87
|
[],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "csvpath"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.609"
|
|
4
4
|
description = "CsvPath Framework is a data preboarding automation library for receiving, validating, and tracking CSV, Excel, JSONL and other tabular data files before they can corrupt downstream data consumers."
|
|
5
5
|
authors = ["David Kershaw <info@csvpath.org>"]
|
|
6
6
|
readme = "README.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.25-py3-none-any.whl
RENAMED
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.27-py3-none-any.whl
RENAMED
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.28-py3-none-any.whl
RENAMED
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/assets/libs/release_candidate_maker-0.0.29-py3-none-any.whl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_error_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_file_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_paths_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/otlp/otlp_results_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.606 → csvpath-0.0.609}/csvpath/managers/integrations/sftpplus/arrival_handler.py
RENAMED
|
File without changes
|