csvpath 0.0.461__tar.gz → 0.0.462__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.461 → csvpath-0.0.462}/PKG-INFO +1 -1
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/last.py +12 -15
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/equality.py +22 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/expression.py +2 -1
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/qualified.py +10 -2
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/util/expression_utility.py +7 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/pyproject.toml +1 -1
- {csvpath-0.0.461 → csvpath-0.0.462}/LICENSE +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/README.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/config/config.ini +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/__init__.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/csvpath.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/csvpaths.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/managers/csvpath_result.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/managers/csvpaths_manager.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/managers/files_manager.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/managers/results_manager.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/function_factory.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/collect.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/datef.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/debug.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/get.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/intf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/nonef.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/now.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/pushpop.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/regex.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/replace.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/track.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/misc/variables.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/stats/correlate.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/validation.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/scanning/exceptions.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/scanning/parser.out +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/scanning/parsetab.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/scanning/scanner.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/scanning/scanning_lexer.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/config.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/error.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/asbool.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/assignment.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/config.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/examples.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/files.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/above.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/advance.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/after_blank.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/all.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/andor.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/any.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/average.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/between.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/collect.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/correlate.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/count.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/count_headers.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/date.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/empty.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/end.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/every.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/fail.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/first.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/get.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/has_dups.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/header.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/header_name.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/header_names_mismatch.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/implementing_functions.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/import.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/in.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/increment.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/jinja.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/last.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/line_number.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/max.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/metaphone.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/mismatch.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/no.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/not.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/now.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/percent_unique.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/pop.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/print.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/print_line.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/print_queue.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/regex.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/replace.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/reset_headers.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/stdev.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/stop.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/string_functions.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/subtract.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/sum.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/tally.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/total_lines.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/track.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/variables.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions/variables_and_headers.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/functions.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/grammar.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/headers.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/images/logo-wordmark-white-on-black-trimmed-padded.png +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/images/logo-wordmark-white-trimmed.png +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/paths.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/qualifiers.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/references.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/terms.md +0 -0
- {csvpath-0.0.461 → csvpath-0.0.462}/docs/variables.md +0 -0
|
@@ -30,20 +30,17 @@ class Last(MatchDecider):
|
|
|
30
30
|
)
|
|
31
31
|
)
|
|
32
32
|
if last or last_scan:
|
|
33
|
-
|
|
34
|
-
self.match = True
|
|
35
|
-
if self.match:
|
|
36
|
-
if len(self.children) == 1:
|
|
37
|
-
self.matcher.csvpath.logger.debug(
|
|
38
|
-
"Overriding frozen in last(): %s", self
|
|
39
|
-
)
|
|
40
|
-
self.matcher.csvpath.is_frozen = False
|
|
41
|
-
self.children[0].matches(skip=[self])
|
|
42
|
-
self.matcher.csvpath.is_frozen = True
|
|
43
|
-
self.matcher.csvpath.logger.debug(
|
|
44
|
-
"Resetting frozen after last(): %s", self
|
|
45
|
-
)
|
|
46
|
-
else:
|
|
47
|
-
self.match = False
|
|
33
|
+
self.match = True
|
|
48
34
|
else:
|
|
49
35
|
self.match = False
|
|
36
|
+
if self.match:
|
|
37
|
+
if len(self.children) == 1:
|
|
38
|
+
self.matcher.csvpath.logger.debug(
|
|
39
|
+
"Overriding frozen in last(): %s", self
|
|
40
|
+
)
|
|
41
|
+
self.matcher.csvpath.is_frozen = False
|
|
42
|
+
self.children[0].matches(skip=[self])
|
|
43
|
+
self.matcher.csvpath.is_frozen = True
|
|
44
|
+
self.matcher.csvpath.logger.debug(
|
|
45
|
+
"Resetting frozen after last(): %s", self
|
|
46
|
+
)
|
|
@@ -27,11 +27,16 @@ class Equality(Matchable):
|
|
|
27
27
|
# and the right-hand side was executed. This is so that a VoteStack-like
|
|
28
28
|
# component could provide debugging access.
|
|
29
29
|
self.DO_WHEN = None
|
|
30
|
+
self.sentinel = False
|
|
30
31
|
|
|
31
32
|
def reset(self) -> None:
|
|
32
33
|
self.value = None
|
|
33
34
|
self.match = None
|
|
34
35
|
self.DO_WHEN = False
|
|
36
|
+
#
|
|
37
|
+
# sentinel makes sure that the right-hand side is only executed 1x
|
|
38
|
+
#
|
|
39
|
+
self.sentinel = False
|
|
35
40
|
super().reset()
|
|
36
41
|
|
|
37
42
|
@property
|
|
@@ -48,6 +53,7 @@ class Equality(Matchable):
|
|
|
48
53
|
while len(self.children) < 2:
|
|
49
54
|
self.children.append(None)
|
|
50
55
|
self.children[0] = o
|
|
56
|
+
o.parent = self
|
|
51
57
|
|
|
52
58
|
@property
|
|
53
59
|
def right(self): # pylint: disable=C0116
|
|
@@ -63,6 +69,7 @@ class Equality(Matchable):
|
|
|
63
69
|
while len(self.children) < 2:
|
|
64
70
|
self.children.append(None)
|
|
65
71
|
self.children[1] = o
|
|
72
|
+
o.parent = self
|
|
66
73
|
|
|
67
74
|
def other_child(self, o): # pylint: disable=C0116
|
|
68
75
|
if self.left == o:
|
|
@@ -363,7 +370,22 @@ class Equality(Matchable):
|
|
|
363
370
|
def _do_when(self, *, skip=None) -> bool:
|
|
364
371
|
b = None
|
|
365
372
|
if self.op == "->":
|
|
373
|
+
#
|
|
374
|
+
# when we use the skip list to prevent loops we are
|
|
375
|
+
# returning the default_match -- the affirmative --
|
|
376
|
+
# resulting in the right-hand side being considered
|
|
377
|
+
# early, before the left-hand side is ready. the
|
|
378
|
+
# sentinel makes sure we don't descend the right-hand
|
|
379
|
+
# side.
|
|
380
|
+
#
|
|
381
|
+
if self.sentinel:
|
|
382
|
+
return self.default_match()
|
|
383
|
+
else:
|
|
384
|
+
self.sentinel = True
|
|
385
|
+
|
|
366
386
|
lm = self.left.matches(skip=skip)
|
|
387
|
+
pln = self.matcher.csvpath.line_monitor.physical_line_number
|
|
388
|
+
|
|
367
389
|
if lm is True:
|
|
368
390
|
b = True
|
|
369
391
|
if self.matcher._AND is False and self._left_nocontrib(self.left):
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import traceback
|
|
3
3
|
import warnings
|
|
4
4
|
from csvpath.util.error import ErrorHandler
|
|
5
|
+
from csvpath.matching.util.expression_utility import ExpressionUtility
|
|
5
6
|
from . import Matchable
|
|
6
7
|
|
|
7
8
|
|
|
@@ -25,7 +26,7 @@ class Expression(Matchable):
|
|
|
25
26
|
|
|
26
27
|
def matches(self, *, skip=None) -> bool:
|
|
27
28
|
if skip and self in skip:
|
|
28
|
-
return True
|
|
29
|
+
return True # should be default_match
|
|
29
30
|
if self.match is None:
|
|
30
31
|
try:
|
|
31
32
|
ret = True
|
|
@@ -259,7 +259,15 @@ class Qualified:
|
|
|
259
259
|
by adding self to the skip list."""
|
|
260
260
|
es = self.matcher.expressions # pylint: disable=E1101
|
|
261
261
|
for e in es:
|
|
262
|
-
|
|
262
|
+
#
|
|
263
|
+
# this fix for 1 test (test_function_last1) is blowing 11 other tests!
|
|
264
|
+
#
|
|
265
|
+
# me = ExpressionUtility.get_my_expression(self)
|
|
266
|
+
# print(f"my expression: me: {me}")
|
|
267
|
+
# if e[0] == me: # added experiment
|
|
268
|
+
# print(f"found my expression!")
|
|
269
|
+
# continue
|
|
270
|
+
# print(f"not my expression: {e[0]}")
|
|
263
271
|
m = e[1] is self.default_match() or e[0].matches(
|
|
264
272
|
skip=[self]
|
|
265
273
|
) # pylint: disable=E1101
|
|
@@ -287,7 +295,7 @@ class Qualified:
|
|
|
287
295
|
_id = f"{self.get_id()}_onchange" # pylint: disable=E1101
|
|
288
296
|
v = self.matcher.get_variable(_id) # pylint: disable=E1101
|
|
289
297
|
me = hashlib.sha256(
|
|
290
|
-
f"{self.to_value()}".encode("utf-8") # pylint: disable=E1101
|
|
298
|
+
f"{self.to_value(skip=[self])}".encode("utf-8") # pylint: disable=E1101
|
|
291
299
|
).hexdigest()
|
|
292
300
|
self.matcher.set_variable(_id, value=me) # pylint: disable=E1101
|
|
293
301
|
# this might be better as an is True/is False test
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.461 → csvpath-0.0.462}/csvpath/matching/functions/headers/header_names_mismatch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.461 → csvpath-0.0.462}/docs/images/logo-wordmark-white-on-black-trimmed-padded.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|