python-jack-knife 0.6.8__tar.gz → 0.6.10__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.8 → python_jack_knife-0.6.10}/PKG-INFO +1 -1
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/stdout.py +12 -27
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/version.py +1 -1
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/PKG-INFO +1 -1
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/LICENSE +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/README.md +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/pyproject.toml +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/setup.cfg +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/__init__.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/common.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/components.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/integrations/opensearch_client.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/integrations/opensearch_index_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/integrations/opensearch_query_pipe.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/integrations/postgres_pipe.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/integrations/snowflake_pipe.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/log.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/main.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/man_page.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/parser.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/__init__.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/denorm.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/factory.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/filter.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/head.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/join.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/let_reduce.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/map.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/move_field.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/progress_pipe.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/query_pipe.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/remove_field.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/sample.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/select.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/sort.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/tail.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/user_pipe_factory.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/pipes/where.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/progress.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/registry.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/__init__.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/create_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/csv_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/devnull.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/dir_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/expect.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/factory.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/format_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/graph.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/graph_bar_line.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/graph_cumulative.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/graph_hist.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/graph_scatter.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/json_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/s3_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/s3_stream.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/sinks.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/tsv_sink.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sinks/user_sink_factory.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/__init__.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/configs_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/csv_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/dir_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/factory.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/favorite_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/format_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/inline_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/json_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/lazy_file.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/lazy_file_local.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/lazy_file_s3.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/macro_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/npy_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/parquet_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/s3_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/source_list.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/sql_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/tsv_source.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/sources/user_source_factory.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/usage.py +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/SOURCES.txt +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/dependency_links.txt +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/entry_points.txt +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/requires.txt +0 -0
- {python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/top_level.txt +0 -0
|
@@ -8,31 +8,6 @@ from pjk.components import Sink, Source
|
|
|
8
8
|
from pjk.usage import ParsedToken, Usage
|
|
9
9
|
from pjk.common import pager_stdout
|
|
10
10
|
|
|
11
|
-
# --- NEW: minimal custom dumper that block-quotes only "tricky" strings ---
|
|
12
|
-
class _PjkDumper(yaml.SafeDumper):
|
|
13
|
-
pass
|
|
14
|
-
|
|
15
|
-
def _needs_block(s: str) -> bool:
|
|
16
|
-
# Strings that are annoying to copy if quoted/escaped:
|
|
17
|
-
# - contain YAML structural chars or JSON-ish payloads
|
|
18
|
-
# - contain colon-space (key-like), braces, brackets, quotes, or backslashes
|
|
19
|
-
# - multi-line strings
|
|
20
|
-
return (
|
|
21
|
-
"\n" in s
|
|
22
|
-
or ": " in s
|
|
23
|
-
or any(c in s for c in "{}[]'\"\\")
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
def _represent_str(dumper, data: str):
|
|
27
|
-
if _needs_block(data):
|
|
28
|
-
# Literal block scalar preserves content exactly, no escaping
|
|
29
|
-
return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|")
|
|
30
|
-
# Default behavior for ordinary strings
|
|
31
|
-
return SafeRepresenter.represent_str(dumper, data)
|
|
32
|
-
|
|
33
|
-
_PjkDumper.add_representer(str, _represent_str)
|
|
34
|
-
# --------------------------------------------------------------------------
|
|
35
|
-
|
|
36
11
|
class StdoutSink(Sink):
|
|
37
12
|
@classmethod
|
|
38
13
|
def usage(cls):
|
|
@@ -54,16 +29,26 @@ class StdoutSink(Sink):
|
|
|
54
29
|
with pager_stdout(self.use_pager):
|
|
55
30
|
for record in self.input:
|
|
56
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
|
+
# everything else -> normal YAML
|
|
57
41
|
yaml.dump(
|
|
58
42
|
record,
|
|
59
43
|
sys.stdout,
|
|
60
|
-
Dumper=_PjkDumper, # <-- use the custom dumper
|
|
61
44
|
sort_keys=False,
|
|
62
45
|
explicit_start=True,
|
|
63
46
|
allow_unicode=True,
|
|
64
|
-
width=10**9
|
|
47
|
+
width=10**9,
|
|
65
48
|
)
|
|
66
49
|
except BrokenPipeError:
|
|
67
50
|
break
|
|
68
51
|
except BrokenPipeError:
|
|
69
52
|
pass
|
|
53
|
+
|
|
54
|
+
|
|
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.8 → python_jack_knife-0.6.10}/src/pjk/integrations/opensearch_client.py
RENAMED
|
File without changes
|
{python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/pjk/integrations/opensearch_index_sink.py
RENAMED
|
File without changes
|
{python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/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
|
|
File without changes
|
|
File without changes
|
{python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/requires.txt
RENAMED
|
File without changes
|
{python_jack_knife-0.6.8 → python_jack_knife-0.6.10}/src/python_jack_knife.egg-info/top_level.txt
RENAMED
|
File without changes
|