csvpath 0.0.595__tar.gz → 0.0.599__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.595 → csvpath-0.0.599}/PKG-INFO +39 -36
- csvpath-0.0.599/assets/.DS_Store +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/config.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-local-azure.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-local-filesystem-mysql.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-local-gcs.ini +6 -7
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-local-s3.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-local-sftp.ini +7 -8
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-windows-azure.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-windows-gcs.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-windows-local.ini +3 -4
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-windows-s3.ini +2 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/jenkins-windows-sftp.ini +3 -3
- csvpath-0.0.599/assets/gocd/.DS_Store +0 -0
- csvpath-0.0.599/assets/gocd/Mac.goenvironment.json +11 -0
- csvpath-0.0.599/assets/gocd/Windows.goenvironment.json +12 -0
- csvpath-0.0.599/assets/integrations/.DS_Store +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/config/config.ini +5 -5
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/csvpath.py +29 -9
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/csvpaths.py +3 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/errors/error_comms.py +30 -17
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/errors/error_manager.py +26 -13
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/file_describer.py +24 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/file_manager.py +12 -3
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/lines_and_headers_cacher.py +22 -20
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/scripts/scripts_results_listener.py +3 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sftpplus/rpc.py +3 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/engine.py +15 -8
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/sql_paths_listener.py +1 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/metadata.py +7 -3
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/paths/paths_describer.py +6 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/results_manager.py +12 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/dates/now.py +3 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/function_factory.py +2 -1
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/dups.py +1 -1
- csvpath-0.0.599/csvpath/matching/functions/sql/sql_in.py +115 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/mode_controller.py +7 -1
- csvpath-0.0.599/csvpath/util/cache.py +87 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/config.py +42 -20
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/config_env.py +12 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/date_util.py +24 -3
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/file_readers.py +4 -2
- csvpath-0.0.599/csvpath/util/file_utility.py +30 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/line_counter.py +6 -14
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/line_spooler.py +21 -9
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/log_utility.py +16 -13
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/nos.py +2 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/pandas_data_reader.py +3 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/files_reference_finder_2.py +6 -3
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/ref_utils.py +5 -3
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/token_filters.py +5 -2
- csvpath-0.0.599/csvpath/util/referrer_printer.py +112 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/run_home_maker.py +4 -2
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/var_utility.py +116 -6
- {csvpath-0.0.595 → csvpath-0.0.599}/pyproject.toml +44 -43
- csvpath-0.0.595/csvpath/util/cache.py +0 -84
- {csvpath-0.0.595 → csvpath-0.0.599}/LICENSE +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/README.md +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/config/function.imports +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/gcs.sh +0 -0
- /csvpath-0.0.595/assets/gocd/mac/gcs-pipeline.gopipeline.json → /csvpath-0.0.599/assets/gocd/mac/google-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/config/env.json +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/file_activator.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/file_registrar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/files_activation_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/otlp/otlp_results_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/paths/paths_manager.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/result_registrar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/results_metadata.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/results/results_registrar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/misc/fingerprint.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/misc/parquet.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/format.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/validity/matches.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/validity/percent_matching.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/slice.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/sort.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/parquet_utility.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/files_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/box.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/code.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/file_writers.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/json/json_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/json/json_reader_helper.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/path_util.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_nos.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.595 → csvpath-0.0.599}/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.599
|
|
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,41 @@ 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: smart-open[all] (==7.5.1)
|
|
58
|
+
Requires-Dist: sqlalchemy (==2.0.48)
|
|
59
|
+
Requires-Dist: tabulate (==0.9.0)
|
|
60
|
+
Requires-Dist: validators (==0.34.0)
|
|
58
61
|
Project-URL: Csvpath.org, https://www.csvpath.org
|
|
59
62
|
Project-URL: Github, https://github.com/csvpath/csvpath.git
|
|
60
63
|
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
|
|
|
@@ -4,7 +4,7 @@ csv_files = csv, tsv, dat, tab, psv, ssv
|
|
|
4
4
|
|
|
5
5
|
[errors]
|
|
6
6
|
csvpath = raise, collect, print
|
|
7
|
-
csvpaths = raise, print
|
|
7
|
+
csvpaths = raise, collect, print
|
|
8
8
|
use_format = full
|
|
9
9
|
pattern = {time}:{file}:{line}:{paths}:{instance}:{chain}: {message}
|
|
10
10
|
|
|
@@ -25,14 +25,13 @@ path = cache
|
|
|
25
25
|
use_cache = no
|
|
26
26
|
|
|
27
27
|
[functions]
|
|
28
|
-
imports =
|
|
28
|
+
imports =
|
|
29
29
|
|
|
30
30
|
[results]
|
|
31
|
-
#archive = sftp://192.168.1.152:2022/mac/sftp/archive
|
|
32
31
|
archive = tmp/sftp/archive
|
|
33
32
|
|
|
34
33
|
[inputs]
|
|
35
|
-
files = sftp://
|
|
34
|
+
files = sftp://{SFTP_SERVER}:{SFTP_PORT}/mac/inputs/named_files
|
|
36
35
|
csvpaths = tmp/sftp/inputs/named_paths
|
|
37
36
|
on_unmatched_file_fingerprints = halt
|
|
38
37
|
allow_http_files = True
|
|
@@ -79,8 +78,8 @@ shell = /bin/bash
|
|
|
79
78
|
[gcs]
|
|
80
79
|
|
|
81
80
|
[sftp]
|
|
82
|
-
server =
|
|
83
|
-
port =
|
|
81
|
+
server = SFTP_SERVER
|
|
82
|
+
port = SFTP_PORT
|
|
84
83
|
username = python
|
|
85
84
|
password = hangzhou
|
|
86
85
|
|
|
@@ -95,7 +94,7 @@ port = SFTPPLUS_PORT
|
|
|
95
94
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
96
95
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
97
96
|
api_url = https://. . . :10020/json
|
|
98
|
-
scripts_dir =
|
|
97
|
+
scripts_dir =
|
|
99
98
|
execute_timeout = 300
|
|
100
99
|
|
|
101
100
|
[ckan]
|
|
@@ -110,5 +109,5 @@ timeout = 5
|
|
|
110
109
|
verify = False
|
|
111
110
|
|
|
112
111
|
[slack]
|
|
113
|
-
webhook_url =
|
|
112
|
+
webhook_url =
|
|
114
113
|
|
|
@@ -4,7 +4,7 @@ csv_files = csv, tsv, dat, tab, psv, ssv
|
|
|
4
4
|
|
|
5
5
|
[errors]
|
|
6
6
|
csvpath = raise, collect, print
|
|
7
|
-
csvpaths = raise, print
|
|
7
|
+
csvpaths = raise, collect, print
|
|
8
8
|
use_format = full
|
|
9
9
|
pattern = {time}:{file}:{line}:{paths}:{instance}:{chain}: {message}
|
|
10
10
|
|
|
@@ -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
|
|
|
@@ -106,4 +106,3 @@ webhook_url =
|
|
|
106
106
|
run_scripts = yes
|
|
107
107
|
shell = /bin/bash
|
|
108
108
|
|
|
109
|
-
|
|
@@ -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
|
|
@@ -13,7 +13,7 @@ csv_files = csv, tsv, dat, tab, psv, ssv
|
|
|
13
13
|
|
|
14
14
|
[errors]
|
|
15
15
|
csvpath = raise, collect, print
|
|
16
|
-
csvpaths = raise, print
|
|
16
|
+
csvpaths = raise, collect, print
|
|
17
17
|
use_format = full
|
|
18
18
|
pattern = {time}:{file}:{line}:{paths}:{instance}:{chain}: {message}
|
|
19
19
|
|
|
@@ -35,7 +35,7 @@ path = cache
|
|
|
35
35
|
use_cache = yes
|
|
36
36
|
|
|
37
37
|
[functions]
|
|
38
|
-
imports =
|
|
38
|
+
imports =
|
|
39
39
|
|
|
40
40
|
[results]
|
|
41
41
|
archive = tmp/local/archive
|
|
@@ -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
|
|
@@ -105,7 +105,7 @@ port = SFTPPLUS_PORT
|
|
|
105
105
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
106
106
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
107
107
|
api_url = https://. . . :10020/json
|
|
108
|
-
scripts_dir =
|
|
108
|
+
scripts_dir =
|
|
109
109
|
execute_timeout = 300
|
|
110
110
|
|
|
111
111
|
[ckan]
|
|
@@ -120,7 +120,7 @@ timeout = 5
|
|
|
120
120
|
verify = False
|
|
121
121
|
|
|
122
122
|
[slack]
|
|
123
|
-
webhook_url =
|
|
123
|
+
webhook_url =
|
|
124
124
|
|
|
125
125
|
[scripts]
|
|
126
126
|
run_scripts = yes
|
|
@@ -35,6 +35,7 @@ from .util.exceptions import (
|
|
|
35
35
|
from csvpath.managers.files.lines_and_headers_cacher import LinesAndHeadersCacher
|
|
36
36
|
from .matching.util.exceptions import MatchException
|
|
37
37
|
from .managers.errors.error_collector import ErrorCollector
|
|
38
|
+
from csvpath.util.date_util import DateUtility as daut
|
|
38
39
|
|
|
39
40
|
|
|
40
41
|
class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
@@ -53,6 +54,13 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
53
54
|
skip_blank_lines=True,
|
|
54
55
|
print_default=True,
|
|
55
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
|
+
#
|
|
56
64
|
error_manager=None,
|
|
57
65
|
project_context="no_project_context",
|
|
58
66
|
project="no_project_name",
|
|
@@ -262,7 +270,8 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
262
270
|
# _function_times_value collects the time a function spends doing its to_value()
|
|
263
271
|
#
|
|
264
272
|
self._function_times_value = {}
|
|
265
|
-
self._created_at =
|
|
273
|
+
self._created_at = daut.now()
|
|
274
|
+
# self._created_at = datetime.now(timezone.utc)
|
|
266
275
|
self._run_started_at = None
|
|
267
276
|
self._collecting = False
|
|
268
277
|
#
|
|
@@ -271,6 +280,7 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
271
280
|
# by collect(), but is the lines not returned by collect().
|
|
272
281
|
#
|
|
273
282
|
self._unmatched = None
|
|
283
|
+
self._cacher = None
|
|
274
284
|
|
|
275
285
|
@property
|
|
276
286
|
def logger(self):
|
|
@@ -307,6 +317,17 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
307
317
|
self.config.save_config()
|
|
308
318
|
self.config.reload()
|
|
309
319
|
|
|
320
|
+
@property
|
|
321
|
+
def cacher(self) -> LinesAndHeadersCacher:
|
|
322
|
+
if self._cacher is None:
|
|
323
|
+
if self.csvpaths:
|
|
324
|
+
self._cacher = self.csvpaths.file_manager.lines_and_headers_cacher
|
|
325
|
+
else:
|
|
326
|
+
self._cacher = LinesAndHeadersCacher(
|
|
327
|
+
self, line_counter=LineCounter(self)
|
|
328
|
+
)
|
|
329
|
+
return self._cacher
|
|
330
|
+
|
|
310
331
|
@property
|
|
311
332
|
def data_from_preceding(self) -> bool:
|
|
312
333
|
"""@private"""
|
|
@@ -1315,7 +1336,8 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
1315
1336
|
last_line = self.matcher.line
|
|
1316
1337
|
self.line_monitor.next_line(last_line=last_line, data=line)
|
|
1317
1338
|
if self.line_monitor.physical_line_number == 0:
|
|
1318
|
-
self._run_started_at =
|
|
1339
|
+
self._run_started_at = daut.now()
|
|
1340
|
+
# self._run_started_at = datetime.now(timezone.utc)
|
|
1319
1341
|
|
|
1320
1342
|
def _consider_line(self, line): # pylint: disable=R0912, R0911
|
|
1321
1343
|
"""@private"""
|
|
@@ -1492,13 +1514,11 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
1492
1514
|
self.logger.debug(
|
|
1493
1515
|
f"Using cache to get total lines and headers for {filename}"
|
|
1494
1516
|
)
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
)
|
|
1500
|
-
self.line_monitor = lahc.get_new_line_monitor(filename)
|
|
1501
|
-
self.headers = lahc.get_original_headers(filename)
|
|
1517
|
+
cacher = self.cacher
|
|
1518
|
+
print(f"cassff: {cacher}: {filename}")
|
|
1519
|
+
self.line_monitor = cacher.get_new_line_monitor(filename)
|
|
1520
|
+
self.headers = cacher.get_original_headers(filename)
|
|
1521
|
+
print(f"cassff: {self.line_monitor}: {self.headers}")
|
|
1502
1522
|
else:
|
|
1503
1523
|
self.logger.debug(
|
|
1504
1524
|
f"Not using cache to get total lines and headers for {filename}"
|
|
@@ -422,6 +422,9 @@ Cache: {cache}
|
|
|
422
422
|
#
|
|
423
423
|
# config=None,
|
|
424
424
|
print_default=self.print_default,
|
|
425
|
+
#
|
|
426
|
+
# we don't use this error manager reference atm.
|
|
427
|
+
#
|
|
425
428
|
error_manager=self.error_manager,
|
|
426
429
|
project=self.project,
|
|
427
430
|
project_context=self.project_context,
|
|
@@ -545,7 +548,6 @@ Cache: {cache}
|
|
|
545
548
|
box = Box()
|
|
546
549
|
ds = []
|
|
547
550
|
for k, v in box.get_my_stuff().items():
|
|
548
|
-
self.logger.debug(f"csvpaths.wrapping up: {k}: {v}")
|
|
549
551
|
if hasattr(v, "close"):
|
|
550
552
|
ds.append(k)
|
|
551
553
|
for _ in ds:
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
|
|
2
|
+
import weakref
|
|
3
|
+
|
|
1
4
|
from typing import Any, List
|
|
2
5
|
from csvpath.util.config import OnError
|
|
3
6
|
from csvpath.modes.error_mode import ErrorMode
|
|
@@ -22,32 +25,42 @@ class ErrorCommunications:
|
|
|
22
25
|
"""
|
|
23
26
|
|
|
24
27
|
def __init__(self, csvpath=None, csvpaths=None) -> None:
|
|
25
|
-
self._csvpath = csvpath
|
|
26
|
-
self._csvpaths = csvpaths
|
|
27
28
|
if not csvpath and not csvpaths:
|
|
28
29
|
raise ValueError("Must have either a CsvPath or CsvPaths instance")
|
|
30
|
+
if csvpath and csvpaths:
|
|
31
|
+
raise ValueError("Cannot have both a csvpath and csvpaths handling the same errors")
|
|
32
|
+
self._csvpath = None if csvpath is None else weakref.ref(csvpath)
|
|
33
|
+
self._csvpaths = None if csvpaths is None else weakref.ref(csvpaths)
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def csvpath(self):
|
|
37
|
+
return None if self._csvpath is None else self._csvpath()
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def csvpaths(self):
|
|
41
|
+
return None if self._csvpaths is None else self._csvpaths()
|
|
29
42
|
|
|
30
43
|
def do_i_quiet(self) -> bool:
|
|
31
44
|
return self.in_policy(OnError.QUIET.value)
|
|
32
45
|
|
|
33
46
|
def do_i_raise(self) -> bool:
|
|
34
|
-
if self.
|
|
35
|
-
return self.
|
|
47
|
+
if self.csvpath and self.csvpath.raise_validation_errors is not None:
|
|
48
|
+
return self.csvpath.raise_validation_errors
|
|
36
49
|
return self.in_policy(OnError.RAISE.value)
|
|
37
50
|
|
|
38
51
|
def do_i_collect(self) -> bool:
|
|
39
|
-
if self.
|
|
40
|
-
return self.
|
|
52
|
+
if self.csvpath and self.csvpath.collect_validation_errors is not None:
|
|
53
|
+
return self.csvpath.collect_validation_errors
|
|
41
54
|
return self.in_policy(OnError.COLLECT.value)
|
|
42
55
|
|
|
43
56
|
def do_i_print(self) -> bool:
|
|
44
|
-
if self.
|
|
45
|
-
return self.
|
|
57
|
+
if self.csvpath and self.csvpath.print_validation_errors is not None:
|
|
58
|
+
return self.csvpath.print_validation_errors
|
|
46
59
|
return self.in_policy(OnError.PRINT.value)
|
|
47
60
|
|
|
48
61
|
def do_i_print_expanded(self) -> bool:
|
|
49
62
|
ret = False
|
|
50
|
-
c = self.
|
|
63
|
+
c = self.csvpath if self.csvpath is not None else self.csvpaths
|
|
51
64
|
if c is not None:
|
|
52
65
|
ret = (
|
|
53
66
|
c.config.get(
|
|
@@ -55,7 +68,7 @@ class ErrorCommunications:
|
|
|
55
68
|
)
|
|
56
69
|
== ErrorMode.FULL
|
|
57
70
|
)
|
|
58
|
-
if self.
|
|
71
|
+
if self.csvpath and self.csvpath.error_mode == ErrorMode.FULL:
|
|
59
72
|
ret = True
|
|
60
73
|
return ret
|
|
61
74
|
|
|
@@ -63,8 +76,8 @@ class ErrorCommunications:
|
|
|
63
76
|
#
|
|
64
77
|
# stop is having problems. copying raise, which works fine.
|
|
65
78
|
#
|
|
66
|
-
if self.
|
|
67
|
-
return self.
|
|
79
|
+
if self.csvpath and self.csvpath.stop_on_validation_errors is not None:
|
|
80
|
+
return self.csvpath.stop_on_validation_errors
|
|
68
81
|
return self.in_policy(OnError.STOP.value)
|
|
69
82
|
"""
|
|
70
83
|
mode = None
|
|
@@ -83,11 +96,11 @@ class ErrorCommunications:
|
|
|
83
96
|
"""
|
|
84
97
|
|
|
85
98
|
def do_i_fail(self) -> bool:
|
|
86
|
-
if self.
|
|
87
|
-
return self.
|
|
99
|
+
if self.csvpath and self.csvpath.fail_on_validation_errors is not None:
|
|
100
|
+
return self.csvpath.fail_on_validation_errors
|
|
88
101
|
return self.in_policy(OnError.FAIL.value)
|
|
89
102
|
|
|
90
103
|
def in_policy(self, v) -> bool:
|
|
91
|
-
if self.
|
|
92
|
-
return v in self.
|
|
93
|
-
return v in self.
|
|
104
|
+
if self.csvpath:
|
|
105
|
+
return v in self.csvpath.config.csvpath_errors_policy
|
|
106
|
+
return v in self.csvpaths.config.csvpaths_errors_policy
|