python-jack-knife 0.6.9__tar.gz → 0.6.11__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.
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/PKG-INFO +1 -1
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/join.py +23 -3
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/stdout.py +0 -9
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/json_source.py +6 -8
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/version.py +1 -1
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/PKG-INFO +1 -1
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/LICENSE +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/README.md +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/pyproject.toml +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/setup.cfg +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/__init__.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/common.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/components.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/opensearch_client.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/opensearch_index_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/opensearch_query_pipe.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/postgres_pipe.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/snowflake_pipe.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/log.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/main.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/man_page.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/parser.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/__init__.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/denorm.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/factory.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/filter.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/head.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/let_reduce.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/map.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/move_field.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/progress_pipe.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/query_pipe.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/remove_field.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/sample.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/select.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/sort.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/tail.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/user_pipe_factory.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/pipes/where.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/progress.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/registry.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/__init__.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/create_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/csv_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/devnull.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/dir_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/expect.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/factory.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/format_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/graph.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/graph_bar_line.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/graph_cumulative.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/graph_hist.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/graph_scatter.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/json_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/s3_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/s3_stream.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/sinks.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/tsv_sink.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sinks/user_sink_factory.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/__init__.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/configs_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/csv_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/dir_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/factory.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/favorite_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/format_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/inline_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/lazy_file.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/lazy_file_local.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/lazy_file_s3.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/macro_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/npy_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/parquet_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/s3_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/source_list.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/sql_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/tsv_source.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/sources/user_source_factory.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/usage.py +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/SOURCES.txt +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/dependency_links.txt +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/entry_points.txt +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/requires.txt +0 -0
- {python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/top_level.txt +0 -0
|
@@ -14,13 +14,13 @@ class JoinPipe(Pipe):
|
|
|
14
14
|
def usage(cls):
|
|
15
15
|
usage = Usage(
|
|
16
16
|
name='join',
|
|
17
|
-
desc="Join records against a keyed source
|
|
17
|
+
desc="Join records against a keyed source or concatentate sources",
|
|
18
18
|
component_class=cls
|
|
19
19
|
)
|
|
20
20
|
usage.def_arg(
|
|
21
21
|
name='mode',
|
|
22
|
-
usage="'left', 'inner', or '
|
|
23
|
-
valid_values={'left', 'inner', 'outer'}
|
|
22
|
+
usage="'left', 'inner', 'outer' or 'concat' behavior.",
|
|
23
|
+
valid_values={'left', 'inner', 'outer', 'concat'}
|
|
24
24
|
)
|
|
25
25
|
usage.def_syntax("pjk <left_source> <map_source> [mapby|groupby]:<key> join:<mode> <sink>")
|
|
26
26
|
|
|
@@ -49,6 +49,14 @@ class JoinPipe(Pipe):
|
|
|
49
49
|
"join:outer"
|
|
50
50
|
],
|
|
51
51
|
expect="[{color:'blue', price:50}, {color:'green'}, {color:'red', price: 20}]")
|
|
52
|
+
|
|
53
|
+
usage.def_example(expr_tokens=
|
|
54
|
+
[
|
|
55
|
+
"[{color:'blue'},{color:'green'}]",
|
|
56
|
+
"[{color:'blue', price:50}, {color:'red', price:20}]",
|
|
57
|
+
"join:concat"
|
|
58
|
+
],
|
|
59
|
+
expect="[{color:'blue'}, {color:'green'}, {color: 'blue', price:50}, {color:'red', price: 20}]")
|
|
52
60
|
return usage
|
|
53
61
|
|
|
54
62
|
def __init__(self, ptok: ParsedToken, usage: Usage):
|
|
@@ -68,7 +76,19 @@ class JoinPipe(Pipe):
|
|
|
68
76
|
self._pending_right = None
|
|
69
77
|
self._check_right = False
|
|
70
78
|
|
|
79
|
+
def concat_iter(self):
|
|
80
|
+
for rec in self.left:
|
|
81
|
+
self.recs_out.increment()
|
|
82
|
+
yield rec
|
|
83
|
+
for rec in self.right:
|
|
84
|
+
self.recs_out.increment()
|
|
85
|
+
yield rec
|
|
86
|
+
|
|
71
87
|
def __iter__(self):
|
|
88
|
+
if self.mode == 'concat':
|
|
89
|
+
yield from self.concat_iter()
|
|
90
|
+
return
|
|
91
|
+
|
|
72
92
|
if not isinstance(self.right, KeyedSource):
|
|
73
93
|
raise UsageError("right source must be a KeyedSource")
|
|
74
94
|
|
|
@@ -29,16 +29,7 @@ class StdoutSink(Sink):
|
|
|
29
29
|
with pager_stdout(self.use_pager):
|
|
30
30
|
for record in self.input:
|
|
31
31
|
try:
|
|
32
|
-
# if it's a simple single-key map whose value is a string, print raw
|
|
33
|
-
# kind of hack to make 'pjk macros -' cut-n-pastable
|
|
34
|
-
if isinstance(record, dict) and len(record) == 1:
|
|
35
|
-
(k, v), = record.items()
|
|
36
|
-
if isinstance(v, str):
|
|
37
|
-
sys.stdout.write(f"{k}: {v}\n---\n")
|
|
38
|
-
continue
|
|
39
|
-
|
|
40
32
|
# everything else -> normal YAML
|
|
41
|
-
print('foo')
|
|
42
33
|
yaml.dump(
|
|
43
34
|
record,
|
|
44
35
|
sys.stdout,
|
|
@@ -33,11 +33,9 @@ class JsonSource(FormatSource):
|
|
|
33
33
|
try:
|
|
34
34
|
yield json.loads(line)
|
|
35
35
|
except json.JSONDecodeError as e:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
except:
|
|
43
|
-
logger.error(f'cannot decode {self.lazy_file.path}')
|
|
36
|
+
try:
|
|
37
|
+
yield from self.as_whole_file()
|
|
38
|
+
return
|
|
39
|
+
except:
|
|
40
|
+
logger.error(f'cannot decode {self.lazy_file.path}')
|
|
41
|
+
break
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/opensearch_client.py
RENAMED
|
File without changes
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/opensearch_index_sink.py
RENAMED
|
File without changes
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/pjk/integrations/opensearch_query_pipe.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
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/requires.txt
RENAMED
|
File without changes
|
{python_jack_knife-0.6.9 → python_jack_knife-0.6.11}/src/python_jack_knife.egg-info/top_level.txt
RENAMED
|
File without changes
|