csvpath 0.0.598__tar.gz → 0.0.605__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.598 → csvpath-0.0.605}/PKG-INFO +40 -36
- csvpath-0.0.605/assets/.DS_Store +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/config.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-local-azure.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-local-filesystem-mysql.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-local-gcs.ini +6 -7
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-local-s3.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-local-sftp.ini +3 -3
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-windows-azure.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-windows-gcs.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-windows-local.ini +5 -5
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-windows-s3.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/jenkins-windows-sftp.ini +3 -3
- csvpath-0.0.605/assets/gocd/.DS_Store +0 -0
- csvpath-0.0.605/assets/gocd/Mac.goenvironment.json +11 -0
- csvpath-0.0.605/assets/gocd/Windows.goenvironment.json +12 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/azure.bat +8 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/gcs.bat +8 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/local.bat +8 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/s3.bat +8 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/sftp.bat +8 -0
- csvpath-0.0.605/assets/integrations/.DS_Store +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.25-py3-none-any.whl +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.27-py3-none-any.whl +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.28-py3-none-any.whl +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.29-py3-none-any.whl +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.30.tar.gz +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.31.tar.gz +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.33.tar.gz +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.34.tar.gz +0 -0
- csvpath-0.0.605/assets/libs/release_candidate_maker-0.0.35.tar.gz +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/config/config.ini +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/csvpath.py +7 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/csvpaths.py +43 -33
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/errors/error_comms.py +30 -17
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/errors/error_manager.py +21 -11
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sftpplus/rpc.py +3 -1
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/engine.py +15 -8
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/sql_paths_listener.py +1 -1
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/webhook/webhook_results_listener.py +8 -10
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/paths/paths_describer.py +28 -10
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/paths/paths_manager.py +1 -3
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/results_manager.py +65 -7
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/test_listener.py +2 -2
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/function_factory.py +2 -1
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/dups.py +1 -1
- csvpath-0.0.605/csvpath/matching/functions/sql/sql_in.py +115 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/mode_controller.py +7 -1
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/config.py +90 -23
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/config_env.py +12 -2
- csvpath-0.0.605/csvpath/util/file_utility.py +30 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/line_spooler.py +21 -9
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/log_utility.py +30 -15
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/path_util.py +5 -8
- csvpath-0.0.605/csvpath/util/referrer_printer.py +112 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/var_utility.py +112 -7
- {csvpath-0.0.598 → csvpath-0.0.605}/pyproject.toml +45 -43
- {csvpath-0.0.598 → csvpath-0.0.605}/LICENSE +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/README.md +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/config/function.imports +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/gcs.sh +0 -0
- /csvpath-0.0.598/assets/gocd/mac/gcs-pipeline.gopipeline.json → /csvpath-0.0.605/assets/gocd/mac/google-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/config/env.json +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/file_activator.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/file_describer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/file_manager.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/file_registrar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/files_activation_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/otlp/otlp_results_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/result_registrar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/results_metadata.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/results/results_registrar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/misc/fingerprint.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/misc/parquet.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/format.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/validity/matches.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/validity/percent_matching.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/slice.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/sort.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/parquet_utility.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/files_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/box.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/cache.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/code.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/file_readers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/file_writers.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/json/json_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/json/json_reader_helper.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/line_counter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/nos.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/run_home_maker.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_nos.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.598 → csvpath-0.0.605}/csvpath/util/xlsx/xlsx_reader_helper.py +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: csvpath
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.605
|
|
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
|
+
License-File: LICENSE
|
|
5
6
|
Author: David Kershaw
|
|
6
7
|
Author-email: info@csvpath.org
|
|
7
8
|
Requires-Python: >3.10,<4.0
|
|
@@ -13,6 +14,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
18
|
Classifier: Topic :: File Formats
|
|
17
19
|
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
18
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
@@ -21,40 +23,42 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
21
23
|
Classifier: Topic :: Text Processing
|
|
22
24
|
Classifier: Topic :: Utilities
|
|
23
25
|
Provides-Extra: pandas
|
|
24
|
-
Requires-Dist: azure-storage-blob (
|
|
25
|
-
Requires-Dist: boto3 (
|
|
26
|
-
Requires-Dist: ckanapi (
|
|
27
|
-
Requires-Dist: email-validator (
|
|
28
|
-
Requires-Dist: google-cloud-storage (
|
|
29
|
-
Requires-Dist: inflect (
|
|
30
|
-
Requires-Dist: jinja2 (
|
|
31
|
-
Requires-Dist: jsonlines (
|
|
32
|
-
Requires-Dist: jsonpath-ng (
|
|
33
|
-
Requires-Dist: jsonpickle (
|
|
34
|
-
Requires-Dist: lark (
|
|
35
|
-
Requires-Dist: lxml (
|
|
36
|
-
Requires-Dist: marquez-python (
|
|
37
|
-
Requires-Dist: metaphone (
|
|
38
|
-
Requires-Dist: mysqlclient (
|
|
39
|
-
Requires-Dist: openlineage-python (
|
|
40
|
-
Requires-Dist: opentelemetry-distro[otlp] (
|
|
41
|
-
Requires-Dist: pandas (
|
|
42
|
-
Requires-Dist: paramiko (
|
|
43
|
-
Requires-Dist: pdoc (
|
|
44
|
-
Requires-Dist: prompt-toolkit (
|
|
45
|
-
Requires-Dist:
|
|
46
|
-
Requires-Dist:
|
|
47
|
-
Requires-Dist:
|
|
48
|
-
Requires-Dist:
|
|
49
|
-
Requires-Dist:
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist:
|
|
52
|
-
Requires-Dist:
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist:
|
|
57
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: azure-storage-blob (==12.28.0)
|
|
27
|
+
Requires-Dist: boto3 (==1.42.65)
|
|
28
|
+
Requires-Dist: ckanapi (==4.9)
|
|
29
|
+
Requires-Dist: email-validator (==2.3.0)
|
|
30
|
+
Requires-Dist: google-cloud-storage (==3.9.0)
|
|
31
|
+
Requires-Dist: inflect (==7.5.0)
|
|
32
|
+
Requires-Dist: jinja2 (==3.1.6)
|
|
33
|
+
Requires-Dist: jsonlines (==4.0.0)
|
|
34
|
+
Requires-Dist: jsonpath-ng (==1.8.0)
|
|
35
|
+
Requires-Dist: jsonpickle (==4.1.1)
|
|
36
|
+
Requires-Dist: lark (==1.3.1)
|
|
37
|
+
Requires-Dist: lxml (==6.0.2)
|
|
38
|
+
Requires-Dist: marquez-python (==0.50.0)
|
|
39
|
+
Requires-Dist: metaphone (==0.6)
|
|
40
|
+
Requires-Dist: mysqlclient (==2.2.8)
|
|
41
|
+
Requires-Dist: openlineage-python (==1.45.0)
|
|
42
|
+
Requires-Dist: opentelemetry-distro[otlp] (==0.50b0)
|
|
43
|
+
Requires-Dist: pandas (==2.3.3) ; extra == "pandas"
|
|
44
|
+
Requires-Dist: paramiko (==3.5.1)
|
|
45
|
+
Requires-Dist: pdoc (==15.0.4)
|
|
46
|
+
Requires-Dist: prompt-toolkit (==3.0.52)
|
|
47
|
+
Requires-Dist: psutil (>=7.2.2,<8.0.0)
|
|
48
|
+
Requires-Dist: psycopg2-binary (==2.9.11)
|
|
49
|
+
Requires-Dist: pyarrow (==23.0.1)
|
|
50
|
+
Requires-Dist: pydantic (==2.12.5)
|
|
51
|
+
Requires-Dist: pyjson5 (==2.0.0)
|
|
52
|
+
Requires-Dist: pylightxl (==1.61)
|
|
53
|
+
Requires-Dist: pytest (==8.4.2)
|
|
54
|
+
Requires-Dist: python-dateutil (==2.9.0.post0)
|
|
55
|
+
Requires-Dist: pytz (==2024.2)
|
|
56
|
+
Requires-Dist: requests (==2.32.5)
|
|
57
|
+
Requires-Dist: ruff (>=0.15.8,<0.16.0)
|
|
58
|
+
Requires-Dist: smart-open[all] (==7.5.1)
|
|
59
|
+
Requires-Dist: sqlalchemy (==2.0.48)
|
|
60
|
+
Requires-Dist: tabulate (==0.9.0)
|
|
61
|
+
Requires-Dist: validators (==0.34.0)
|
|
58
62
|
Project-URL: Csvpath.org, https://www.csvpath.org
|
|
59
63
|
Project-URL: Github, https://github.com/csvpath/csvpath.git
|
|
60
64
|
Description-Content-Type: text/markdown
|
|
Binary file
|
|
@@ -31,7 +31,7 @@ path = cache
|
|
|
31
31
|
use_cache = no
|
|
32
32
|
|
|
33
33
|
[functions]
|
|
34
|
-
imports =
|
|
34
|
+
imports =
|
|
35
35
|
|
|
36
36
|
[results]
|
|
37
37
|
archive = tmp/gcs/archive
|
|
@@ -44,7 +44,7 @@ allow_http_files = True
|
|
|
44
44
|
allow_local_files = True
|
|
45
45
|
|
|
46
46
|
[listeners]
|
|
47
|
-
groups =
|
|
47
|
+
groups = default
|
|
48
48
|
sqlite.result = from csvpath.managers.integrations.sqlite.sqlite_result_listener import SqliteResultListener
|
|
49
49
|
sqlite.results = from csvpath.managers.integrations.sqlite.sqlite_results_listener import SqliteResultsListener
|
|
50
50
|
default.file = from csvpath.managers.files.files_listener import FilesListener
|
|
@@ -74,12 +74,11 @@ scripts.results = from csvpath.managers.integrations.scripts.scripts_results_lis
|
|
|
74
74
|
[gcs]
|
|
75
75
|
|
|
76
76
|
[sftp]
|
|
77
|
-
server =
|
|
78
|
-
port =
|
|
77
|
+
server = SFTP_SERVER
|
|
78
|
+
port = SFTP_PORT
|
|
79
79
|
username = python
|
|
80
80
|
password = hangzhou
|
|
81
81
|
|
|
82
|
-
|
|
83
82
|
[sqlite]
|
|
84
83
|
db = archive/csvpath.db
|
|
85
84
|
|
|
@@ -91,7 +90,7 @@ port = SFTPPLUS_PORT
|
|
|
91
90
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
92
91
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
93
92
|
api_url = https://. . . :10020/json
|
|
94
|
-
scripts_dir =
|
|
93
|
+
scripts_dir =
|
|
95
94
|
execute_timeout = 300
|
|
96
95
|
|
|
97
96
|
[ckan]
|
|
@@ -106,5 +105,5 @@ timeout = 5
|
|
|
106
105
|
verify = False
|
|
107
106
|
|
|
108
107
|
[slack]
|
|
109
|
-
webhook_url =
|
|
108
|
+
webhook_url =
|
|
110
109
|
|
|
@@ -31,7 +31,7 @@ imports =
|
|
|
31
31
|
archive = tmp/sftp/archive
|
|
32
32
|
|
|
33
33
|
[inputs]
|
|
34
|
-
files = sftp://
|
|
34
|
+
files = sftp://{SFTP_SERVER}:{SFTP_PORT}/mac/inputs/named_files
|
|
35
35
|
csvpaths = tmp/sftp/inputs/named_paths
|
|
36
36
|
on_unmatched_file_fingerprints = halt
|
|
37
37
|
allow_http_files = True
|
|
@@ -78,8 +78,8 @@ shell = /bin/bash
|
|
|
78
78
|
[gcs]
|
|
79
79
|
|
|
80
80
|
[sftp]
|
|
81
|
-
server =
|
|
82
|
-
port =
|
|
81
|
+
server = SFTP_SERVER
|
|
82
|
+
port = SFTP_PORT
|
|
83
83
|
username = python
|
|
84
84
|
password = hangzhou
|
|
85
85
|
|
|
@@ -26,7 +26,7 @@ path = cache
|
|
|
26
26
|
use_cache = no
|
|
27
27
|
|
|
28
28
|
[functions]
|
|
29
|
-
imports =
|
|
29
|
+
imports =
|
|
30
30
|
|
|
31
31
|
[results]
|
|
32
32
|
archive = tmp\local\archive
|
|
@@ -69,8 +69,8 @@ slack.results = from csvpath.managers.integrations.slack.sender import SlackSend
|
|
|
69
69
|
[gcs]
|
|
70
70
|
|
|
71
71
|
[sftp]
|
|
72
|
-
server =
|
|
73
|
-
port =
|
|
72
|
+
server = SFTP_SERVER
|
|
73
|
+
port = SFTP_PORT
|
|
74
74
|
username = python
|
|
75
75
|
password = hangzhou
|
|
76
76
|
|
|
@@ -85,7 +85,7 @@ port = SFTPPLUS_PORT
|
|
|
85
85
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
86
86
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
87
87
|
api_url = https://. . . :10020/json
|
|
88
|
-
scripts_dir =
|
|
88
|
+
scripts_dir =
|
|
89
89
|
execute_timeout = 300
|
|
90
90
|
|
|
91
91
|
[ckan]
|
|
@@ -100,7 +100,7 @@ timeout = 5
|
|
|
100
100
|
verify = False
|
|
101
101
|
|
|
102
102
|
[slack]
|
|
103
|
-
webhook_url =
|
|
103
|
+
webhook_url =
|
|
104
104
|
|
|
105
105
|
[scripts]
|
|
106
106
|
run_scripts = yes
|
|
@@ -40,7 +40,7 @@ imports =
|
|
|
40
40
|
archive = tmp\sftp\archive
|
|
41
41
|
|
|
42
42
|
[inputs]
|
|
43
|
-
files = sftp://
|
|
43
|
+
files = sftp://{SFTP_SERVER}:{SFTP_PORT}/windows/inputs/named_files
|
|
44
44
|
csvpaths = tmp\sftp\inputs\named_paths
|
|
45
45
|
on_unmatched_file_fingerprints = halt
|
|
46
46
|
allow_http_files=True
|
|
@@ -112,8 +112,8 @@ scripts.results = from csvpath.managers.integrations.scripts.scripts_results_lis
|
|
|
112
112
|
#
|
|
113
113
|
|
|
114
114
|
[sftp]
|
|
115
|
-
server =
|
|
116
|
-
port =
|
|
115
|
+
server = SFTP_SERVER
|
|
116
|
+
port = SFTP_PORT
|
|
117
117
|
username = python
|
|
118
118
|
password = hangzhou
|
|
119
119
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -48,7 +48,7 @@ allow_http_files = True
|
|
|
48
48
|
allow_local_files = True
|
|
49
49
|
|
|
50
50
|
[listeners]
|
|
51
|
-
groups = default
|
|
51
|
+
groups = default
|
|
52
52
|
webhook.results = from csvpath.managers.integrations.webhook.webhook_results_listener import WebhookResultsListener
|
|
53
53
|
scripts.results = from csvpath.managers.integrations.scripts.scripts_results_listener import ScriptsResultsListener
|
|
54
54
|
sql.file = from csvpath.managers.integrations.sql.sql_file_listener import SqlFileListener
|
|
@@ -85,7 +85,7 @@ slack.results = from csvpath.managers.integrations.slack.sender import SlackSend
|
|
|
85
85
|
[gcs]
|
|
86
86
|
|
|
87
87
|
[sftp]
|
|
88
|
-
server =
|
|
88
|
+
server = SFTP_SERVER
|
|
89
89
|
port = 2022
|
|
90
90
|
username = python
|
|
91
91
|
password = hangzhou
|
|
@@ -54,6 +54,13 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
54
54
|
skip_blank_lines=True,
|
|
55
55
|
print_default=True,
|
|
56
56
|
# config=None,
|
|
57
|
+
#
|
|
58
|
+
# atm, we don't use this error manager reference. instead we make
|
|
59
|
+
# an error manager for this csvpath, and if we have a csvpaths we
|
|
60
|
+
# add its error_manager as an internal listener for error events
|
|
61
|
+
#
|
|
62
|
+
# we can refactor this reference away
|
|
63
|
+
#
|
|
57
64
|
error_manager=None,
|
|
58
65
|
project_context="no_project_context",
|
|
59
66
|
project="no_project_name",
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
1
|
+
"""CsvPaths' intent is to help you manage and automate your use
|
|
2
|
+
of the CsvPath library. it makes it easier to scale your CSV quality control."""
|
|
3
3
|
|
|
4
4
|
import os
|
|
5
5
|
import traceback
|
|
6
6
|
import atexit
|
|
7
7
|
import threading
|
|
8
8
|
|
|
9
|
-
from uuid import uuid4
|
|
9
|
+
from uuid import uuid4
|
|
10
10
|
from abc import ABC, abstractmethod
|
|
11
11
|
from typing import List, Any, NewType
|
|
12
|
-
from datetime import datetime
|
|
12
|
+
from datetime import datetime
|
|
13
13
|
from .managers.errors.error import Error
|
|
14
14
|
from .managers.errors.error_comms import ErrorCommunications
|
|
15
15
|
from .managers.errors.error_manager import ErrorManager
|
|
@@ -26,7 +26,6 @@ from .managers.results.results_manager import ResultsManager
|
|
|
26
26
|
from .managers.results.result import Result
|
|
27
27
|
from .util.box import Box
|
|
28
28
|
from . import CsvPath
|
|
29
|
-
from .managers.integrations.otlp.metrics import Metrics
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
# types for clarity
|
|
@@ -108,7 +107,7 @@ class CsvPaths(CsvPathsCoordinator, ErrorCollector):
|
|
|
108
107
|
skip_blank_lines=True,
|
|
109
108
|
print_default=True,
|
|
110
109
|
project_context=None,
|
|
111
|
-
project=None
|
|
110
|
+
project=None,
|
|
112
111
|
# config: Config = None,
|
|
113
112
|
):
|
|
114
113
|
if CsvPaths.METRICS_WRAP_REG is False:
|
|
@@ -219,7 +218,14 @@ class CsvPaths(CsvPathsCoordinator, ErrorCollector):
|
|
|
219
218
|
# that need to know about the run during the run; e.g. parquet()
|
|
220
219
|
#
|
|
221
220
|
self._csvpath_instances = []
|
|
222
|
-
|
|
221
|
+
#
|
|
222
|
+
# any listeners added here will be added to the internal_listeners of
|
|
223
|
+
# the csvpath instances that run.
|
|
224
|
+
#
|
|
225
|
+
self.dynamic_csvpath_error_listeners = []
|
|
226
|
+
#
|
|
227
|
+
#
|
|
228
|
+
#
|
|
223
229
|
self.logger.info(
|
|
224
230
|
f"Initialized CsvPaths: {self} in thread: {threading.current_thread()}"
|
|
225
231
|
)
|
|
@@ -278,40 +284,42 @@ class CsvPaths(CsvPathsCoordinator, ErrorCollector):
|
|
|
278
284
|
return f"""
|
|
279
285
|
Context: {self.project_context}.{self.project}
|
|
280
286
|
Logger: {logstr}
|
|
281
|
-
Configured log path: {self.config.get(section=
|
|
287
|
+
Configured log path: {self.config.get(section="logging", name="log_file")}
|
|
282
288
|
Current log paths: {logpath}
|
|
283
289
|
Config file: {self.config.configpath}
|
|
284
|
-
Var sub source: {self.config.get(section=
|
|
290
|
+
Var sub source: {self.config.get(section="config", name="var_sub_source")}
|
|
285
291
|
Var subs: {subs}
|
|
286
292
|
Errors:
|
|
287
|
-
- csvpath: {self.config.get(section=
|
|
288
|
-
- csvpaths: {self.config.get(section=
|
|
289
|
-
Named-files: {self.config.get(section=
|
|
290
|
-
Named-paths: {self.config.get(section=
|
|
291
|
-
Archive: {self.config.get(section=
|
|
293
|
+
- csvpath: {self.config.get(section="errors", name="csvpath")}
|
|
294
|
+
- csvpaths: {self.config.get(section="errors", name="csvpaths")}
|
|
295
|
+
Named-files: {self.config.get(section="inputs", name="files")}
|
|
296
|
+
Named-paths: {self.config.get(section="inputs", name="files")}
|
|
297
|
+
Archive: {self.config.get(section="results", name="archive")}
|
|
292
298
|
Cache: {cache}
|
|
293
299
|
{lstrs}
|
|
294
300
|
"""
|
|
295
301
|
|
|
296
|
-
"""
|
|
297
|
-
def info_dump(self) -> None:
|
|
298
|
-
self.logger.info(
|
|
299
|
-
"Initated logging on log path: %s",
|
|
300
|
-
self.config.get(section="logging", name="log_file"),
|
|
301
|
-
)
|
|
302
|
-
self.logger.info("Config file is at: %s", self.config.configpath)
|
|
303
|
-
intgs = self.config.get(section="listeners", name="groups")
|
|
304
|
-
self.logger.debug("Active integrations:")
|
|
305
|
-
for _ in intgs:
|
|
306
|
-
self.logger.debug(" - %s", _)
|
|
307
|
-
"""
|
|
308
|
-
|
|
309
302
|
def _set_managers(self) -> None:
|
|
310
303
|
self.paths_manager = PathsManager(csvpaths=self)
|
|
311
304
|
self.file_manager = FileManager(csvpaths=self)
|
|
312
|
-
self.results_manager = ResultsManager(csvpaths=self)
|
|
313
305
|
self.ecoms = ErrorCommunications(csvpaths=self)
|
|
314
306
|
self.error_manager = ErrorManager(csvpaths=self)
|
|
307
|
+
#
|
|
308
|
+
# we take a bit more care with resman because it may have listeners
|
|
309
|
+
# that are set programmatically. other managers deal with their
|
|
310
|
+
# registrars differently and don't have the problem of maintaining
|
|
311
|
+
# lists of listeners at the csvpaths level
|
|
312
|
+
#
|
|
313
|
+
resman = ResultsManager(csvpaths=self)
|
|
314
|
+
if self.results_manager:
|
|
315
|
+
resman.dynamic_result_listeners = (
|
|
316
|
+
self.results_manager.dynamic_result_listeners
|
|
317
|
+
)
|
|
318
|
+
resman.dynamic_results_listeners = (
|
|
319
|
+
self.results_manager.dynamic_results_listeners
|
|
320
|
+
)
|
|
321
|
+
resman.dynamic_run_listeners = self.results_manager.dynamic_run_listeners
|
|
322
|
+
self.results_manager = resman
|
|
315
323
|
|
|
316
324
|
@property
|
|
317
325
|
def project(self) -> str:
|
|
@@ -422,6 +430,9 @@ Cache: {cache}
|
|
|
422
430
|
#
|
|
423
431
|
# config=None,
|
|
424
432
|
print_default=self.print_default,
|
|
433
|
+
#
|
|
434
|
+
# we don't use this error manager reference atm.
|
|
435
|
+
#
|
|
425
436
|
error_manager=self.error_manager,
|
|
426
437
|
project=self.project,
|
|
427
438
|
project_context=self.project_context,
|
|
@@ -429,6 +440,8 @@ Cache: {cache}
|
|
|
429
440
|
if path.config.configpath != self.config.configpath:
|
|
430
441
|
path.config.set_config_path_and_reload(self.config.configpath)
|
|
431
442
|
path.logger = None
|
|
443
|
+
for _ in self.dynamic_csvpath_error_listeners:
|
|
444
|
+
path.error_manager.add_internal_listener(_)
|
|
432
445
|
return path
|
|
433
446
|
|
|
434
447
|
def stop_all(self) -> None: # pragma: no cover
|
|
@@ -545,7 +558,6 @@ Cache: {cache}
|
|
|
545
558
|
box = Box()
|
|
546
559
|
ds = []
|
|
547
560
|
for k, v in box.get_my_stuff().items():
|
|
548
|
-
self.logger.debug(f"csvpaths.wrapping up: {k}: {v}")
|
|
549
561
|
if hasattr(v, "close"):
|
|
550
562
|
ds.append(k)
|
|
551
563
|
for _ in ds:
|
|
@@ -1446,10 +1458,8 @@ Cache: {cache}
|
|
|
1446
1458
|
#
|
|
1447
1459
|
# re: W0212: treating _consider_line something like package private
|
|
1448
1460
|
#
|
|
1449
|
-
matched = (
|
|
1450
|
-
|
|
1451
|
-
line
|
|
1452
|
-
)
|
|
1461
|
+
matched = self.current_matcher._consider_line( # pylint:disable=W0212
|
|
1462
|
+
line
|
|
1453
1463
|
)
|
|
1454
1464
|
if self.current_matcher.stopped:
|
|
1455
1465
|
stopped_count.append(1)
|