wrapped_print ,
)
from lkj.importing import import_object , register_namespace_forwarding
+from lkj.chunking import chunk_iterable , chunker
from lkj.misc import identity , value_in_interval
ddir = lambda obj : list ( filter ( lambda x : not x . startswith ( '_' ), dir ( obj )))
-
-
[docs]
-
def chunker ( a , chk_size , * , include_tail = True ):
-
"""Chunks an iterable into non-overlapping chunks of size chk_size.
-
-
>>> list(chunker(range(8), 3))
-
[(0, 1, 2), (3, 4, 5), (6, 7)]
-
>>> list(chunker(range(8), 3, include_tail=False))
-
[(0, 1, 2), (3, 4, 5)]
-
"""
-
from itertools import zip_longest
-
-
it = iter ( a )
-
if include_tail :
-
sentinel = object ()
-
for chunk in zip_longest ( * ([ it ] * chk_size ), fillvalue = sentinel ):
-
yield tuple ( item for item in chunk if item is not sentinel )
-
else :
-
yield from zip ( * ([ it ] * chk_size ))
-
-
-
[docs]
def user_machine_id ():
diff --git a/_modules/lkj/chunking.html b/_modules/lkj/chunking.html
new file mode 100644
index 0000000..64b7d17
--- /dev/null
+++ b/_modules/lkj/chunking.html
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
lkj.chunking — lkj 0.1.10 documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lkj
+
+
+
+
+
+
+
+
+
Source code for lkj.chunking
+"""Tools for chunking (segumentation, batching, slicing, etc.)"""
+
+from itertools import zip_longest , chain , islice
+
+from typing import (
+ Iterable ,
+ Union ,
+ Dict ,
+ List ,
+ Tuple ,
+ Mapping ,
+ TypeVar ,
+ Iterator ,
+ Callable ,
+ Optional ,
+ T ,
+)
+
+KT = TypeVar ( 'KT' ) # there's a typing.KT, but pylance won't allow me to use it!
+VT = TypeVar ( 'VT' ) # there's a typing.VT, but pylance won't allow me to use it!
+
+
+
+
[docs]
+
def chunk_iterable (
+
iterable : Union [ Iterable [ T ], Mapping [ KT , VT ]],
+
chk_size : int ,
+
* ,
+
chunk_type : Optional [ Callable [ ... , Union [ Iterable [ T ], Mapping [ KT , VT ]]]] = None ,
+
) -> Iterator [ Union [ List [ T ], Tuple [ T , ... ], Dict [ KT , VT ]]]:
+
"""
+
Divide an iterable into chunks/batches of a specific size.
+
+
Handles both mappings (e.g. dicts) and non-mappings (lists, tuples, sets...)
+
as you probably expect it to (if you give a dict input, it will chunk on the
+
(key, value) items and return dicts of these).
+
Thought note that you always can control the type of the chunks with the
+
`chunk_type` argument.
+
+
Args:
+
iterable: The iterable or mapping to divide.
+
chk_size: The size of each chunk.
+
chunk_type: The type of the chunks (list, tuple, set, dict...).
+
+
Returns:
+
An iterator of dicts if the input is a Mapping, otherwise an iterator
+
of collections (list, tuple, set...).
+
+
Examples:
+
>>> list(chunk_iterable([1, 2, 3, 4, 5], 2))
+
[[1, 2], [3, 4], [5]]
+
+
>>> list(chunk_iterable((1, 2, 3, 4, 5), 3, chunk_type=tuple))
+
[(1, 2, 3), (4, 5)]
+
+
>>> list(chunk_iterable({"a": 1, "b": 2, "c": 3}, 2))
+
[{'a': 1, 'b': 2}, {'c': 3}]
+
+
>>> list(chunk_iterable({"x": 1, "y": 2, "z": 3}, 1, chunk_type=dict))
+
[{'x': 1}, {'y': 2}, {'z': 3}]
+
"""
+
if isinstance ( iterable , Mapping ):
+
if chunk_type is None :
+
chunk_type = dict
+
it = iter ( iterable . items ())
+
for first in it :
+
yield {
+
key : value for key , value in chain ([ first ], islice ( it , chk_size - 1 ))
+
}
+
else :
+
if chunk_type is None :
+
if isinstance ( iterable , ( list , tuple , set )):
+
chunk_type = type ( iterable )
+
else :
+
chunk_type = list
+
it = iter ( iterable )
+
for first in it :
+
yield chunk_type ( chain ([ first ], islice ( it , chk_size - 1 )))
+
+
+
+
+
[docs]
+
def chunker (
+
a : Iterable [ T ],
+
chk_size : int ,
+
* ,
+
include_tail : bool = True
+
) -> Iterator [ Tuple [ T , ... ]]:
+
"""
+
Chunks an iterable into non-overlapping chunks of size `chk_size`.
+
+
Note: This chunker is simpler, but also less efficient than `chunk_iterable`.
+
It does have the extra `include_tail` argument, though.
+
Though note that you can get the effect of `include_tail=False` in `chunk_iterable`
+
by using `filter(lambda x: len(x) == chk_size, chunk_iterable(...))`.
+
+
Args:
+
a: The iterable to be chunked.
+
chk_size: The size of each chunk.
+
include_tail: If True, includes the remaining elements as the last chunk
+
even if they are fewer than `chk_size`. Defaults to True.
+
+
Returns:
+
An iterator of tuples, where each tuple is a chunk of size `chk_size`
+
(or fewer elements if `include_tail` is True).
+
+
Examples:
+
>>> list(chunker(range(8), 3))
+
[(0, 1, 2), (3, 4, 5), (6, 7)]
+
>>> list(chunker(range(8), 3, include_tail=False))
+
[(0, 1, 2), (3, 4, 5)]
+
"""
+
it = iter ( a )
+
if include_tail :
+
sentinel = object ()
+
for chunk in zip_longest ( * ([ it ] * chk_size ), fillvalue = sentinel ):
+
yield tuple ( item for item in chunk if item is not sentinel )
+
else :
+
yield from zip ( * ([ it ] * chk_size ))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_modules/lkj/dicts.html b/_modules/lkj/dicts.html
index 30c7db5..157fc2c 100644
--- a/_modules/lkj/dicts.html
+++ b/_modules/lkj/dicts.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/filesys.html b/_modules/lkj/filesys.html
index 1f81f8a..ed0ebaa 100644
--- a/_modules/lkj/filesys.html
+++ b/_modules/lkj/filesys.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/funcs.html b/_modules/lkj/funcs.html
index 7be8e82..57ddcc2 100644
--- a/_modules/lkj/funcs.html
+++ b/_modules/lkj/funcs.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/importing.html b/_modules/lkj/importing.html
index 8673df8..f220767 100644
--- a/_modules/lkj/importing.html
+++ b/_modules/lkj/importing.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/iterables.html b/_modules/lkj/iterables.html
index a7c5cfb..2838b44 100644
--- a/_modules/lkj/iterables.html
+++ b/_modules/lkj/iterables.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/loggers.html b/_modules/lkj/loggers.html
index 7b791ad..7265d8b 100644
--- a/_modules/lkj/loggers.html
+++ b/_modules/lkj/loggers.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/misc.html b/_modules/lkj/misc.html
index 3c08bec..91e5885 100644
--- a/_modules/lkj/misc.html
+++ b/_modules/lkj/misc.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_modules/lkj/strings.html b/_modules/lkj/strings.html
index caace31..df35d60 100644
--- a/_modules/lkj/strings.html
+++ b/_modules/lkj/strings.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/_sources/module_docs/lkj/chunking.rst.txt b/_sources/module_docs/lkj/chunking.rst.txt
new file mode 100644
index 0000000..8b1486b
--- /dev/null
+++ b/_sources/module_docs/lkj/chunking.rst.txt
@@ -0,0 +1,4 @@
+lkj.chunking
+============
+.. automodule:: lkj.chunking
+ :members:
diff --git a/_sources/table_of_contents.rst.txt b/_sources/table_of_contents.rst.txt
index d3e710d..4438235 100644
--- a/_sources/table_of_contents.rst.txt
+++ b/_sources/table_of_contents.rst.txt
@@ -3,6 +3,7 @@
:caption: Contents:
module_docs/lkj
+ module_docs/lkj/chunking
module_docs/lkj/dicts
module_docs/lkj/filesys
module_docs/lkj/funcs
diff --git a/genindex.html b/genindex.html
index 324608d..46216f0 100644
--- a/genindex.html
+++ b/genindex.html
@@ -47,6 +47,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
@@ -122,7 +123,9 @@ C
@@ -227,6 +230,13 @@ L
+
+ lkj.chunking
+
+
@@ -250,6 +260,8 @@ L
module
+
+
lkj.importing
@@ -257,8 +269,6 @@ L
module
-
-
Release: 0.1.10
-Last change: Dec 07, 2024
+Last change: Dec 13, 2024
diff --git a/module_docs/lkj.html b/module_docs/lkj.html
index 5b75065..4dc762f 100644
--- a/module_docs/lkj.html
+++ b/module_docs/lkj.html
@@ -24,7 +24,7 @@
-
+
@@ -52,11 +52,11 @@
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
@@ -206,18 +206,6 @@
-
-
-lkj. chunker ( a , chk_size , * , include_tail = True ) [source]
-Chunks an iterable into non-overlapping chunks of size chk_size.
->>> list ( chunker ( range ( 8 ), 3 ))
-[(0, 1, 2), (3, 4, 5), (6, 7)]
->>> list ( chunker ( range ( 8 ), 3 , include_tail = False ))
-[(0, 1, 2), (3, 4, 5)]
-
-
-
-
lkj. get_caller_package_name ( default = None ) [source]
@@ -238,7 +226,7 @@
diff --git a/module_docs/lkj/chunking.html b/module_docs/lkj/chunking.html
new file mode 100644
index 0000000..d7fa640
--- /dev/null
+++ b/module_docs/lkj/chunking.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
+ lkj.chunking — lkj 0.1.10 documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ lkj
+
+
+
+
+
+
+
+
+
+lkj.chunking
+Tools for chunking (segumentation, batching, slicing, etc.)
+
+
+lkj.chunking. chunk_iterable ( iterable : Iterable | Mapping [ KT , VT ] , chk_size : int , * , chunk_type : Callable [ [ ... ] , Iterable | Mapping [ KT , VT ] ] | None = None ) → Iterator [ List | Tuple [ T , ... ] | Dict [ KT , VT ] ] [source]
+Divide an iterable into chunks/batches of a specific size.
+Handles both mappings (e.g. dicts) and non-mappings (lists, tuples, sets…)
+as you probably expect it to (if you give a dict input, it will chunk on the
+(key, value) items and return dicts of these).
+Thought note that you always can control the type of the chunks with the
+chunk_type argument.
+
+Parameters:
+
+iterable – The iterable or mapping to divide.
+chk_size – The size of each chunk.
+chunk_type – The type of the chunks (list, tuple, set, dict…).
+
+
+Returns:
+An iterator of dicts if the input is a Mapping, otherwise an iterator
+of collections (list, tuple, set…).
+
+
+Examples
+>>> list ( chunk_iterable ([ 1 , 2 , 3 , 4 , 5 ], 2 ))
+[[1, 2], [3, 4], [5]]
+
+
+>>> list ( chunk_iterable (( 1 , 2 , 3 , 4 , 5 ), 3 , chunk_type = tuple ))
+[(1, 2, 3), (4, 5)]
+
+
+>>> list ( chunk_iterable ({ "a" : 1 , "b" : 2 , "c" : 3 }, 2 ))
+[{'a': 1, 'b': 2}, {'c': 3}]
+
+
+>>> list ( chunk_iterable ({ "x" : 1 , "y" : 2 , "z" : 3 }, 1 , chunk_type = dict ))
+[{'x': 1}, {'y': 2}, {'z': 3}]
+
+
+
+
+
+
+lkj.chunking. chunker ( a : Iterable , chk_size : int , * , include_tail : bool = True ) → Iterator [ Tuple [ T , ... ] ] [source]
+Chunks an iterable into non-overlapping chunks of size chk_size .
+Note: This chunker is simpler, but also less efficient than chunk_iterable .
+It does have the extra include_tail argument, though.
+Though note that you can get the effect of include_tail=False in chunk_iterable
+by using filter(lambda x: len(x) == chk_size, chunk_iterable(…)) .
+
+Parameters:
+
+a – The iterable to be chunked.
+chk_size – The size of each chunk.
+include_tail – If True, includes the remaining elements as the last chunk
+even if they are fewer than chk_size . Defaults to True.
+
+
+Returns:
+An iterator of tuples, where each tuple is a chunk of size chk_size
+(or fewer elements if include_tail is True).
+
+
+Examples
+>>> list ( chunker ( range ( 8 ), 3 ))
+[(0, 1, 2), (3, 4, 5), (6, 7)]
+>>> list ( chunker ( range ( 8 ), 3 , include_tail = False ))
+[(0, 1, 2), (3, 4, 5)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_docs/lkj/dicts.html b/module_docs/lkj/dicts.html
index e768f2b..a5ca831 100644
--- a/module_docs/lkj/dicts.html
+++ b/module_docs/lkj/dicts.html
@@ -25,7 +25,7 @@
-
+
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
exclusive_subdict()
inclusive_subdict()
@@ -154,7 +155,7 @@
diff --git a/module_docs/lkj/filesys.html b/module_docs/lkj/filesys.html
index 9b8ad1f..9e64021 100644
--- a/module_docs/lkj/filesys.html
+++ b/module_docs/lkj/filesys.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
do_nothing()
diff --git a/module_docs/lkj/funcs.html b/module_docs/lkj/funcs.html
index 92bf1c1..a43c137 100644
--- a/module_docs/lkj/funcs.html
+++ b/module_docs/lkj/funcs.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/module_docs/lkj/importing.html b/module_docs/lkj/importing.html
index 5ca01be..6815bf5 100644
--- a/module_docs/lkj/importing.html
+++ b/module_docs/lkj/importing.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/module_docs/lkj/iterables.html b/module_docs/lkj/iterables.html
index be460bc..cc1b751 100644
--- a/module_docs/lkj/iterables.html
+++ b/module_docs/lkj/iterables.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/module_docs/lkj/loggers.html b/module_docs/lkj/loggers.html
index d62c4ec..54b2b26 100644
--- a/module_docs/lkj/loggers.html
+++ b/module_docs/lkj/loggers.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/module_docs/lkj/misc.html b/module_docs/lkj/misc.html
index 6a04605..d4e743b 100644
--- a/module_docs/lkj/misc.html
+++ b/module_docs/lkj/misc.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/module_docs/lkj/strings.html b/module_docs/lkj/strings.html
index 9f2ad5c..3347912 100644
--- a/module_docs/lkj/strings.html
+++ b/module_docs/lkj/strings.html
@@ -49,6 +49,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/objects.inv b/objects.inv
index f119e40..f366669 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/py-modindex.html b/py-modindex.html
index e8d4884..942a4b2 100644
--- a/py-modindex.html
+++ b/py-modindex.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
@@ -100,6 +101,11 @@ Python Module Index
lkj
+
+
+
+ lkj.chunking
+
diff --git a/search.html b/search.html
index 3a82daf..78b1901 100644
--- a/search.html
+++ b/search.html
@@ -50,6 +50,7 @@
Contents:
lkj
+lkj.chunking
lkj.dicts
lkj.filesys
lkj.funcs
diff --git a/searchindex.js b/searchindex.js
index ab96c6b..6e6ddc8 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"Contents:": [[0, null], [10, null]], "Indices and tables": [[0, "indices-and-tables"]], "Welcome to lkj\u2019s documentation!": [[0, null]], "lkj": [[1, null]], "lkj.dicts": [[2, null]], "lkj.filesys": [[3, null]], "lkj.funcs": [[4, null]], "lkj.importing": [[5, null]], "lkj.iterables": [[6, null]], "lkj.loggers": [[7, null]], "lkj.misc": [[8, null]], "lkj.strings": [[9, null]]}, "docnames": ["index", "module_docs/lkj", "module_docs/lkj/dicts", "module_docs/lkj/filesys", "module_docs/lkj/funcs", "module_docs/lkj/importing", "module_docs/lkj/iterables", "module_docs/lkj/loggers", "module_docs/lkj/misc", "module_docs/lkj/strings", "table_of_contents"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["index.rst", "module_docs/lkj.rst", "module_docs/lkj/dicts.rst", "module_docs/lkj/filesys.rst", "module_docs/lkj/funcs.rst", "module_docs/lkj/importing.rst", "module_docs/lkj/iterables.rst", "module_docs/lkj/loggers.rst", "module_docs/lkj/misc.rst", "module_docs/lkj/strings.rst", "table_of_contents.rst"], "indexentries": {"add_as_attribute_of() (in module lkj)": [[1, "lkj.add_as_attribute_of", false]], "add_attr() (in module lkj)": [[1, "lkj.add_attr", false]], "camel_to_snake() (in module lkj.strings)": [[9, "lkj.strings.camel_to_snake", false]], "chunker() (in module lkj)": [[1, "lkj.chunker", false]], "clog() (in module lkj.loggers)": [[7, "lkj.loggers.clog", false]], "common (lkj.iterables.setscomparisonresult attribute)": [[6, "lkj.iterables.SetsComparisonResult.common", false]], "compare_sets() (in module lkj.iterables)": [[6, "lkj.iterables.compare_sets", false]], "do_nothing() (in module lkj.filesys)": [[3, "lkj.filesys.do_nothing", false]], "enable_sourcing_from_file() (in module lkj.filesys)": [[3, "lkj.filesys.enable_sourcing_from_file", false]], "errorinfo (class in lkj.loggers)": [[7, "lkj.loggers.ErrorInfo", false]], "exclusive_subdict() (in module lkj.dicts)": [[2, "lkj.dicts.exclusive_subdict", false]], "fields_of_string_formats() (in module lkj.strings)": [[9, "lkj.strings.fields_of_string_formats", false]], "filter_greater_than() (in module lkj.funcs)": [[4, "lkj.funcs.filter_greater_than", false]], "find_spec() (lkj.importing.namespaceforwardingfinder method)": [[5, "lkj.importing.NamespaceForwardingFinder.find_spec", false]], "full_path_maker() (in module lkj.funcs)": [[4, "lkj.funcs.full_path_maker", false]], "fullname (lkj.importing.namespaceforwardingloader attribute)": [[5, "lkj.importing.NamespaceForwardingLoader.fullname", false]], "get_app_data_dir() (in module lkj.filesys)": [[3, "lkj.filesys.get_app_data_dir", false]], "get_by_value() (in module lkj.iterables)": [[6, "lkj.iterables.get_by_value", false]], "get_caller_package_name() (in module lkj)": [[1, "lkj.get_caller_package_name", false]], "get_watermarked_dir() (in module lkj.filesys)": [[3, "lkj.filesys.get_watermarked_dir", false]], "has_watermark() (in module lkj.filesys)": [[3, "lkj.filesys.has_watermark", false]], "import_object() (in module lkj.importing)": [[5, "lkj.importing.import_object", false]], "inclusive_subdict() (in module lkj.dicts)": [[2, "lkj.dicts.inclusive_subdict", false]], "indent_lines() (in module lkj.strings)": [[9, "lkj.strings.indent_lines", false]], "index_of() (in module lkj.iterables)": [[6, "lkj.iterables.index_of", false]], "instance_flag_is_set() (in module lkj.loggers)": [[7, "lkj.loggers.instance_flag_is_set", false]], "left_only (lkj.iterables.setscomparisonresult attribute)": [[6, "lkj.iterables.SetsComparisonResult.left_only", false]], "lkj": [[1, "module-lkj", false]], "lkj.dicts": [[2, "module-lkj.dicts", false]], "lkj.filesys": [[3, "module-lkj.filesys", false]], "lkj.funcs": [[4, "module-lkj.funcs", false]], "lkj.importing": [[5, "module-lkj.importing", false]], "lkj.iterables": [[6, "module-lkj.iterables", false]], "lkj.loggers": [[7, "module-lkj.loggers", false]], "lkj.misc": [[8, "module-lkj.misc", false]], "lkj.strings": [[9, "module-lkj.strings", false]], "load_module() (lkj.importing.namespaceforwardingloader method)": [[5, "id0", false], [5, "lkj.importing.NamespaceForwardingLoader.load_module", false]], "log_calls() (in module lkj.loggers)": [[7, "lkj.loggers.log_calls", false]], "module": [[1, "module-lkj", false], [2, "module-lkj.dicts", false], [3, "module-lkj.filesys", false], [4, "module-lkj.funcs", false], [5, "module-lkj.importing", false], [6, "module-lkj.iterables", false], [7, "module-lkj.loggers", false], [8, "module-lkj.misc", false], [9, "module-lkj.strings", false]], "most_common_indent() (in module lkj.strings)": [[9, "lkj.strings.most_common_indent", false]], "namespaceforwardingfinder (class in lkj.importing)": [[5, "lkj.importing.NamespaceForwardingFinder", false]], "namespaceforwardingloader (class in lkj.importing)": [[5, "lkj.importing.NamespaceForwardingLoader", false]], "print_progress() (in module lkj.loggers)": [[7, "lkj.loggers.print_progress", false]], "print_with_timestamp() (in module lkj.loggers)": [[7, "lkj.loggers.print_with_timestamp", false]], "regex_based_substitution() (in module lkj.strings)": [[9, "lkj.strings.regex_based_substitution", false]], "register_namespace_forwarding() (in module lkj.importing)": [[5, "lkj.importing.register_namespace_forwarding", false]], "rename_file() (in module lkj.filesys)": [[3, "lkj.filesys.rename_file", false]], "return_error_info_on_error() (in module lkj.loggers)": [[7, "lkj.loggers.return_error_info_on_error", false]], "right_only (lkj.iterables.setscomparisonresult attribute)": [[6, "lkj.iterables.SetsComparisonResult.right_only", false]], "setscomparisonresult (class in lkj.iterables)": [[6, "lkj.iterables.SetsComparisonResult", false]], "snake_to_camel() (in module lkj.strings)": [[9, "lkj.strings.snake_to_camel", false]], "source_base (lkj.importing.namespaceforwardingfinder attribute)": [[5, "lkj.importing.NamespaceForwardingFinder.source_base", false]], "source_base (lkj.importing.namespaceforwardingloader attribute)": [[5, "lkj.importing.NamespaceForwardingLoader.source_base", false]], "target_base (lkj.importing.namespaceforwardingfinder attribute)": [[5, "lkj.importing.NamespaceForwardingFinder.target_base", false]], "target_base (lkj.importing.namespaceforwardingloader attribute)": [[5, "lkj.importing.NamespaceForwardingLoader.target_base", false]], "truncate_dict_values() (in module lkj.dicts)": [[2, "lkj.dicts.truncate_dict_values", false]], "truncate_string_with_marker() (in module lkj.strings)": [[9, "lkj.strings.truncate_string_with_marker", false]], "unique_affixes() (in module lkj.strings)": [[9, "lkj.strings.unique_affixes", false]], "user_machine_id() (in module lkj)": [[1, "lkj.user_machine_id", false]], "value_in_interval() (in module lkj.misc)": [[8, "lkj.misc.value_in_interval", false]], "watermark_dir() (in module lkj.filesys)": [[3, "lkj.filesys.watermark_dir", false]], "wrap_text_with_exact_spacing() (in module lkj.loggers)": [[7, "lkj.loggers.wrap_text_with_exact_spacing", false]], "wrapped_print() (in module lkj.loggers)": [[7, "lkj.loggers.wrapped_print", false]], "zip_with_filenames() (in module lkj.funcs)": [[4, "lkj.funcs.zip_with_filenames", false]]}, "objects": {"": [[1, 0, 0, "-", "lkj"]], "lkj": [[1, 1, 1, "", "add_as_attribute_of"], [1, 1, 1, "", "add_attr"], [1, 1, 1, "", "chunker"], [2, 0, 0, "-", "dicts"], [3, 0, 0, "-", "filesys"], [4, 0, 0, "-", "funcs"], [1, 1, 1, "", "get_caller_package_name"], [5, 0, 0, "-", "importing"], [6, 0, 0, "-", "iterables"], [7, 0, 0, "-", "loggers"], [8, 0, 0, "-", "misc"], [9, 0, 0, "-", "strings"], [1, 1, 1, "", "user_machine_id"]], "lkj.dicts": [[2, 1, 1, "", "exclusive_subdict"], [2, 1, 1, "", "inclusive_subdict"], [2, 1, 1, "", "truncate_dict_values"]], "lkj.filesys": [[3, 1, 1, "", "do_nothing"], [3, 1, 1, "", "enable_sourcing_from_file"], [3, 1, 1, "", "get_app_data_dir"], [3, 1, 1, "", "get_watermarked_dir"], [3, 1, 1, "", "has_watermark"], [3, 1, 1, "", "rename_file"], [3, 1, 1, "", "watermark_dir"]], "lkj.funcs": [[4, 1, 1, "", "filter_greater_than"], [4, 1, 1, "", "full_path_maker"], [4, 1, 1, "", "zip_with_filenames"]], "lkj.importing": [[5, 2, 1, "", "NamespaceForwardingFinder"], [5, 2, 1, "", "NamespaceForwardingLoader"], [5, 1, 1, "", "import_object"], [5, 1, 1, "", "register_namespace_forwarding"]], "lkj.importing.NamespaceForwardingFinder": [[5, 3, 1, "", "find_spec"], [5, 4, 1, "", "source_base"], [5, 4, 1, "", "target_base"]], "lkj.importing.NamespaceForwardingLoader": [[5, 4, 1, "", "fullname"], [5, 3, 1, "id0", "load_module"], [5, 4, 1, "", "source_base"], [5, 4, 1, "", "target_base"]], "lkj.iterables": [[6, 2, 1, "", "SetsComparisonResult"], [6, 1, 1, "", "compare_sets"], [6, 1, 1, "", "get_by_value"], [6, 1, 1, "", "index_of"]], "lkj.iterables.SetsComparisonResult": [[6, 4, 1, "", "common"], [6, 4, 1, "", "left_only"], [6, 4, 1, "", "right_only"]], "lkj.loggers": [[7, 2, 1, "", "ErrorInfo"], [7, 1, 1, "", "clog"], [7, 1, 1, "", "instance_flag_is_set"], [7, 1, 1, "", "log_calls"], [7, 1, 1, "", "print_progress"], [7, 1, 1, "", "print_with_timestamp"], [7, 1, 1, "", "return_error_info_on_error"], [7, 1, 1, "", "wrap_text_with_exact_spacing"], [7, 1, 1, "", "wrapped_print"]], "lkj.misc": [[8, 1, 1, "", "value_in_interval"]], "lkj.strings": [[9, 1, 1, "", "camel_to_snake"], [9, 1, 1, "", "fields_of_string_formats"], [9, 1, 1, "", "indent_lines"], [9, 1, 1, "", "most_common_indent"], [9, 1, 1, "", "regex_based_substitution"], [9, 1, 1, "", "snake_to_camel"], [9, 1, 1, "", "truncate_string_with_marker"], [9, 1, 1, "", "unique_affixes"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method", "4": "py:attribute"}, "terms": {"": [1, 3, 7, 9], "0": [0, 1, 6, 7, 9], "07": 0, "1": [0, 1, 2, 4, 6, 7, 8], "10": [0, 2, 4, 7], "11": 2, "12": 9, "123": 9, "1234567890": 9, "1479416085": 1, "15": 9, "2": [1, 2, 4, 6, 7, 8, 9], "20": 2, "2024": 0, "3": [1, 2, 6, 7, 8, 9], "30": 7, "4": [1, 2], "5": [1, 2, 4, 6, 7], "6": [1, 2, 4, 7], "66": 2, "7": [1, 2, 4, 8], "8": [1, 2, 4, 8, 9], "80": 7, "88": 7, "890": 9, "9": [2, 4, 8], "90": 9, "A": [2, 3, 5, 6, 7, 9], "But": [1, 7, 9], "By": 3, "For": 3, "If": [1, 2, 3, 5, 6, 7, 8, 9], "In": 1, "It": [3, 7], "Of": 1, "One": [7, 9], "The": [1, 2, 3, 5, 6, 7, 8, 9], "Then": 5, "To": [3, 7], "_": 1, "__doc__": 1, "__init__": 7, "__name__": [1, 7], "_always_log": 7, "_calling_nam": 7, "_clog": 7, "_done_calling_nam": 7, "_github_url_templ": 9, "_helper": 1, "_raise_watermark_error": 3, "abc": [6, 9], "abcd": 9, "abl": 7, "access": 9, "achiev": 3, "acronym": 9, "actual": 3, "ad": [1, 5, 7], "add": [1, 7], "add_as_attribute_of": [0, 1, 10], "add_attr": [0, 1, 10], "add_doc": 1, "add_nam": 1, "affix": 9, "afresh": 3, "after": [2, 3, 7], "aggreg": 9, "alia": 6, "all": [1, 2, 7, 9], "allow": [3, 7], "alreadi": 3, "also": [3, 7], "amin": 9, "an": [1, 3, 4, 5, 7, 9], "analyz": 9, "ani": [1, 3, 6, 7, 8], "anoth": [3, 9], "another_testdir": 3, "ap": 9, "app": 9, "app_data_dir": 3, "app_data_rootdir": 3, "appear": 7, "appl": 9, "appli": [3, 6], "applic": 3, "appropri": 9, "apr": 9, "apricot": 9, "ar": [1, 2, 4, 9], "arg": [1, 3, 7], "argument": [1, 3, 8], "assert": [2, 6, 7], "ation": 9, "attr_nam": 1, "attr_val": 1, "attrgett": 7, "attribut": [1, 5, 7, 9], "b": [2, 6, 7, 9], "back": 3, "backward": 5, "bana": 9, "banana": 9, "band": 9, "banda": 9, "bandana": 9, "bar": 1, "base": [4, 5, 9], "base_directori": 4, "basenam": 3, "basic_parse_test": 9, "basicparsetest": 9, "becaus": 6, "befor": [1, 7], "being": 5, "between": 7, "bool": [3, 7, 8, 9], "both": [1, 6], "built": [3, 7, 8], "byte": 3, "c": [2, 6, 7, 9], "call": [1, 3, 6, 7, 9], "callabl": [1, 3, 7, 8, 9], "callback": 3, "caller": 1, "camel_case_exampl": 9, "camel_str": 9, "camel_to_snak": [0, 9, 10], "camelcas": 9, "camelcaseexampl": 9, "can": [1, 2, 3, 7, 8, 9], "candi": 9, "candl": 9, "capit": 9, "carri": 9, "case": [3, 7, 9], "catch": 7, "caught_error_typ": 7, "chang": [0, 8], "check": [2, 3, 7], "chk_size": 1, "choos": [3, 7], "chunk": 1, "chunker": [0, 1, 10], "class": [5, 6, 7, 9], "clog": [0, 7, 10], "code": [5, 7], "com": 1, "common": [6, 7, 9], "compar": 6, "compare_iter": 6, "compare_set": [0, 6, 10], "comparison": 6, "compat": 5, "complet": 1, "complex_token": 9, "complextoken": 9, "comput": 1, "condit": [3, 7], "config": 3, "construct": 9, "contain": [1, 5, 9], "content": 3, "control": [3, 7], "convert": 9, "correctli": 9, "correspond": 5, "count": 4, "cours": 1, "creat": [3, 4, 9], "current": 1, "custom": [3, 5], "d": [2, 6, 7, 8], "data": [3, 4, 6], "databas": 7, "date": 8, "debug": 7, "dec": 0, "decor": [1, 3, 7], "def": [1, 3, 7], "default": [1, 2, 3, 7, 8, 9], "delet": 3, "depend": 3, "deprec": 5, "desir": 9, "detect": [3, 5, 9], "determin": 9, "dflt_error_info_processor": 7, "dict": [0, 4, 6, 7, 9, 10], "dictionari": [2, 6, 9], "differ": 7, "directori": [3, 4], "dirnam": 3, "dirpath": 3, "displai": 7, "display_tim": 7, "divis": 7, "do": [1, 3, 5, 7], "do_noth": [0, 3, 10], "docstr": 9, "doctest": 5, "doe": [3, 7], "doesn": 3, "don": 3, "done": [6, 7], "dot": 5, "dot_path": 5, "dry_run": 3, "duplic": 9, "dynam": [5, 7], "e": [2, 7, 8, 9], "each": [4, 7, 9], "egress": 9, "egress_msg": 7, "element": [4, 6], "els": 3, "enabl": [3, 5], "enable_sourcing_from_fil": [0, 3, 10], "end": 7, "ensur": [4, 7], "error": [3, 7], "error_info_processor": 7, "errorinfo": [0, 7, 10], "etc": [4, 6], "exactli": 7, "examin": 9, "exampl": [2, 3, 4, 6, 7, 9], "exce": 7, "except": 7, "exclud": 2, "exclusive_subdict": [0, 2, 10], "exec_modul": 5, "execut": 7, "exist": [3, 5, 7], "exist_ok": 3, "exit": 7, "explicitli": 1, "extract": 9, "f": [1, 3, 5, 7, 8], "factori": 3, "failur": 5, "fals": [1, 3, 7, 8, 9], "favor": 5, "ff": 8, "field": [6, 9], "fields_of_string_format": [0, 9, 10], "file": [3, 4, 7], "file1": 4, "file2": 4, "file_001": 4, "file_002": 4, "file_004": 4, "file_005": 4, "file_006": 4, "filenam": 4, "filesi": [0, 10], "filter": 4, "filter_greater_than": [0, 4, 10], "filter_greater_than_5": 4, "find": [5, 9], "find_spec": 5, "finder": 5, "first": [3, 6, 9], "fix": 7, "flag": 7, "flag_attr": 7, "fli": 9, "flight": 9, "flow": 9, "flower": 9, "foo": [1, 7], "formatt": 9, "forward": 5, "found": 9, "framework": 3, "from": [1, 2, 3, 5, 6, 7, 8, 9], "full": [3, 4, 5], "full_path": 4, "full_path_mak": [0, 4, 10], "fullnam": 5, "func": [0, 3, 7, 10], "func_nam": 7, "function": [1, 3, 4, 5, 6, 7, 8, 9], "functool": [3, 6, 7, 9], "g": [7, 9], "ge": 8, "gener": 4, "generic_func": 1, "get": [1, 3, 5, 6, 7], "get_app_data_dir": [0, 3, 10], "get_by_id": 6, "get_by_valu": [0, 6, 10], "get_caller_package_nam": [0, 1, 10], "get_val": 8, "get_value_of_b": 6, "get_watermarked_dir": [0, 3, 10], "gettempdir": 3, "github": 1, "give": 1, "given": [1, 4, 9], "grape": 9, "greater": 4, "guarante": 6, "h": 7, "ha": [1, 3, 9], "handl": 9, "happen": 3, "has_watermark": [0, 3, 10], "hasattr": [1, 7], "have": [2, 5, 7, 9], "hcp": 5, "hello": 7, "helper": [1, 7], "here": 9, "hh": 7, "home": 3, "how": 3, "html_parser": 9, "htmlparser": 9, "http": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9], "i2mint": 1, "id": [1, 6], "ident": [8, 9], "if_does_not_exist": 3, "if_exist": 3, "if_watermark_validation_fail": 3, "ignor": 9, "ignore_error": 3, "ignore_first_lin": 9, "imb": 5, "imbed_data_prep": 5, "import": [0, 1, 3, 6, 7, 8, 9, 10], "import_object": [0, 5, 10], "importerror": 5, "includ": 2, "include_tail": 1, "inclusive_subdict": [0, 2, 10], "inde": 3, "indent": 9, "indent_lin": [0, 9, 10], "index": [0, 6], "index_of": [0, 6, 10], "indic": 2, "info": 7, "ingress": 9, "ingress_msg": 7, "input": [2, 7, 9], "insert": [2, 5, 9], "instanc": 7, "instance_flag_is_set": [0, 7, 10], "instead": [7, 9], "int": [2, 6, 7], "intent": 1, "invers": 9, "investig": 2, "is_maximum": 8, "is_minimum": 8, "isinst": 7, "issu": 1, "issuecom": 1, "item": [7, 9], "item1": 7, "item10": 7, "item2": 7, "item3": 7, "item4": 7, "item5": 7, "item6": 7, "item7": 7, "item8": 7, "item9": 7, "itemgett": 8, "iter": [0, 1, 2, 4, 7, 9, 10], "its": [1, 9], "iz": 6, "j": 7, "join": [3, 5, 9], "jumpstart": 1, "just": [3, 6, 7], "kei": [2, 6, 9], "kit": 1, "kt": 6, "kwarg": [1, 3, 7], "label": 4, "lambda": [7, 8], "larg": 2, "large_dict": 2, "last": [0, 6, 9], "le": 8, "lead": 1, "least": 1, "left": 6, "left_limit": 9, "left_onli": 6, "length": [2, 7, 9], "lightweight": 1, "like": [2, 4, 9], "limit": 9, "line": [7, 9], "line_prefix": 7, "line_sep": 9, "list": [1, 2, 3, 4, 6, 7, 8, 9], "list_of_dict": 6, "listdir": 3, "litter": 7, "lkj": 10, "ll": [3, 5, 7], "load": 5, "load_modul": 5, "loader": 5, "local": 7, "log": [2, 7], "log_cal": [0, 7, 10], "log_condit": 7, "log_func": 7, "log_if_verbose_set_to_tru": 7, "logger": [0, 10], "long": 2, "longer": [2, 9], "look": 2, "lt": 8, "main": [1, 3], "make": [3, 7], "make_dir": 3, "makedir": 3, "manual": 3, "map": [2, 6, 8], "marker": 9, "max": 2, "max_list_s": 2, "max_string_s": 2, "max_val": 8, "max_width": 7, "maximum": [2, 7, 9], "mdat": 5, "meant": 9, "messag": 7, "meta_path": 5, "method": 5, "middl": [2, 9], "middle_mark": [2, 9], "min_val": 8, "mini": 3, "misc": [0, 10], "miscellan": 8, "mkdir": 3, "mm": 7, "modif": 7, "modul": [0, 1, 2, 5, 7], "more": 2, "most": [6, 9], "most_common_ind": [0, 9, 10], "msg": 7, "much": 2, "multipli": 7, "must": 5, "my": 1, "my_func": 1, "my_watermark": 3, "myclass": 7, "mytestdir": 3, "n": [7, 9], "name": [1, 3, 4, 5, 6, 7, 9], "namedtupl": 6, "namespac": [1, 5], "namespaceforwardingfind": [0, 5, 10], "namespaceforwardingload": [0, 5, 10], "nanoth": 9, "need": 3, "nest": 2, "never": 4, "new": [2, 7], "newlin": 7, "nf": 7, "non": [1, 3], "none": [1, 2, 3, 5, 7, 8, 9], "nonexistent_dir": 3, "note": [1, 6, 7, 9], "noth": 3, "notify_user_that_path_does_not_exist": 3, "now": 7, "number": 6, "o": [3, 5], "obj": [1, 7], "object": [1, 5, 7], "occur": 7, "often": 9, "onli": [2, 6, 7], "oper": [7, 8], "option": [2, 3, 7], "orang": 9, "order": [4, 6], "other": [2, 9], "otherwis": 3, "our": 3, "out": [2, 9], "output": [3, 7], "over": 7, "overlap": 1, "packag": [1, 5], "page": 0, "pair": 9, "paramet": [1, 2, 3, 5, 6, 7, 9], "parametr": [7, 9], "partial": [1, 3, 6, 7, 9], "pass": 1, "path": [3, 4, 5], "perform": 9, "persist": 7, "place": 7, "point": [1, 9], "pollut": 1, "popul": 3, "possibli": 7, "postprocess": 9, "prefix": 9, "preprocess": 9, "preserv": 7, "print": [2, 3, 7, 9], "print_func": 7, "print_progress": [0, 7, 10], "print_with_timestamp": [0, 7, 10], "process": 7, "properli": 5, "provid": [1, 3, 5, 7], "put": 5, "python": 9, "quot": 9, "rais": [3, 5, 9], "rang": [1, 4, 6], "re": 9, "read": 3, "realiti": 1, "realli": 1, "recent": [6, 9], "recogniz": 3, "recreat": 3, "reduc": 2, "refresh": 7, "regex": 9, "regex_based_substitut": [0, 9, 10], "regist": 5, "register_namespace_forward": [0, 5, 10], "relat": 5, "releas": 0, "remov": 1, "renam": 3, "rename_fil": [0, 3, 10], "renamer_funct": 3, "replac": 9, "replace_thi": 9, "respons": 3, "result": [3, 6], "return": [1, 2, 3, 5, 6, 7, 9], "return_error_info_on_error": [0, 7, 10], "right": 6, "right_limit": 9, "right_onli": 6, "rminat": 9, "rmtree": 3, "root": 3, "rootdir": 3, "runner": 3, "sai": [4, 5, 7], "same": 2, "search": 0, "second": 6, "see": [1, 3], "self": 7, "send": 7, "sep": [7, 9], "separ": 7, "sequenc": [6, 9], "sequenti": 4, "servic": 7, "set": [2, 5, 6, 7, 9], "setscomparisonresult": [0, 6, 10], "shorter": 9, "should": 7, "shutil": 3, "simple_example_test": 9, "simpleexampletest": 9, "sinc": [7, 9], "singl": 9, "size": [1, 2], "skip": 5, "snake_cas": 9, "snake_str": 9, "snake_to_camel": [0, 9, 10], "so": 1, "some": [3, 7], "someth": 3, "sometim": 7, "sort": 9, "sourc": [1, 2, 3, 4, 5, 6, 7, 8, 9], "source_bas": 5, "space": 2, "spec": 5, "specif": [3, 9], "specifi": [1, 3, 7], "split": 9, "sprintf": 7, "ss": 7, "start": [1, 7], "start_idx": 4, "statement": 7, "store": 3, "str": [1, 2, 3, 5, 7, 9], "string": [0, 2, 3, 5, 7, 10], "structur": [2, 3], "style": 7, "su": 9, "subdirectori": 3, "substitut": 9, "suffix": 9, "suitabl": 3, "sum": 9, "supercalifragilisticexpialidoci": 9, "suppress": 7, "sy": 5, "system": 3, "t": [3, 7, 8], "tab": 1, "take": [1, 2, 3, 7], "taken": 3, "target": 5, "target_bas": 5, "tell": 3, "tempfil": 3, "templat": 9, "termin": 9, "test": 9, "testdir": 3, "tester": 9, "testi": 9, "text": 7, "than": [2, 4, 9], "thei": 7, "them": 3, "thi": [1, 2, 3, 5, 6, 7, 9], "threshold": 4, "through": 3, "time": 7, "timestamp": 7, "tip": 7, "too": 2, "tool": [2, 4, 5, 6, 8], "total": 7, "traceback": [6, 7, 9], "track": 7, "tripl": 9, "true": [1, 3, 5, 7, 8, 9], "truncat": [2, 9], "truncate_dict_valu": [0, 2, 10], "truncate_str": 9, "truncate_string_with_mark": [0, 9, 10], "tupl": [6, 7, 9], "two": 6, "type": [3, 5, 6, 7, 8, 9], "typic": 3, "u": [3, 9], "underscor": 1, "uniqu": [4, 9], "unique_affix": [0, 9, 10], "unless": 3, "us": [1, 2, 3, 4, 5, 6, 7, 8, 9], "usag": [5, 7], "user": [1, 3, 7], "user_machine_id": [0, 1, 10], "usual": [3, 7, 9], "util": [3, 7, 9], "valid": 3, "valu": [1, 2, 6], "value_in_interv": [0, 8, 10], "valueerror": [6, 9], "variabl": [7, 9], "verbos": [3, 7], "verifi": 3, "versbos": 7, "view": [1, 9], "vt": 6, "wa": 3, "want": [1, 2, 3, 6, 7, 8, 9], "watermark": 3, "watermark_dir": [0, 3, 10], "watermark_testdir": 3, "we": [3, 7], "what": [3, 7], "when": [2, 5, 6, 7, 9], "where": [2, 7, 9], "whether": [7, 9], "which": 1, "while": 7, "whose": 3, "width": 7, "with_that": 9, "without": 1, "word": 7, "work": [2, 4], "would": 7, "wrap": 7, "wrap_text_with_exact_spac": [0, 7, 10], "wrapped_print": [0, 7, 10], "write": 3, "write_output": 3, "x": [7, 8, 9], "xml_http_request_test": 9, "xmlhttprequesttest": 9, "xy": 9, "xyz": 9, "y": 7, "you": [1, 2, 3, 5, 6, 7, 8, 9], "your": [3, 7], "z": 6, "zero": 7, "zerodivisionerror": 7, "zip": 4, "zip_fil": 4, "zip_with_filenam": [0, 4, 10]}, "titles": ["Welcome to lkj\u2019s documentation!", "lkj", "lkj.dicts", "lkj.filesys", "lkj.funcs", "lkj.importing", "lkj.iterables", "lkj.loggers", "lkj.misc", "lkj.strings", "<no title>"], "titleterms": {"": 0, "content": [0, 10], "dict": 2, "document": 0, "filesi": 3, "func": 4, "import": 5, "indic": 0, "iter": 6, "lkj": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "logger": 7, "misc": 8, "string": 9, "tabl": 0, "welcom": 0}})
\ No newline at end of file
+Search.setIndex({"alltitles": {"Contents:": [[0, null], [11, null]], "Indices and tables": [[0, "indices-and-tables"]], "Welcome to lkj\u2019s documentation!": [[0, null]], "lkj": [[1, null]], "lkj.chunking": [[2, null]], "lkj.dicts": [[3, null]], "lkj.filesys": [[4, null]], "lkj.funcs": [[5, null]], "lkj.importing": [[6, null]], "lkj.iterables": [[7, null]], "lkj.loggers": [[8, null]], "lkj.misc": [[9, null]], "lkj.strings": [[10, null]]}, "docnames": ["index", "module_docs/lkj", "module_docs/lkj/chunking", "module_docs/lkj/dicts", "module_docs/lkj/filesys", "module_docs/lkj/funcs", "module_docs/lkj/importing", "module_docs/lkj/iterables", "module_docs/lkj/loggers", "module_docs/lkj/misc", "module_docs/lkj/strings", "table_of_contents"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["index.rst", "module_docs/lkj.rst", "module_docs/lkj/chunking.rst", "module_docs/lkj/dicts.rst", "module_docs/lkj/filesys.rst", "module_docs/lkj/funcs.rst", "module_docs/lkj/importing.rst", "module_docs/lkj/iterables.rst", "module_docs/lkj/loggers.rst", "module_docs/lkj/misc.rst", "module_docs/lkj/strings.rst", "table_of_contents.rst"], "indexentries": {"add_as_attribute_of() (in module lkj)": [[1, "lkj.add_as_attribute_of", false]], "add_attr() (in module lkj)": [[1, "lkj.add_attr", false]], "camel_to_snake() (in module lkj.strings)": [[10, "lkj.strings.camel_to_snake", false]], "chunk_iterable() (in module lkj.chunking)": [[2, "lkj.chunking.chunk_iterable", false]], "chunker() (in module lkj.chunking)": [[2, "lkj.chunking.chunker", false]], "clog() (in module lkj.loggers)": [[8, "lkj.loggers.clog", false]], "common (lkj.iterables.setscomparisonresult attribute)": [[7, "lkj.iterables.SetsComparisonResult.common", false]], "compare_sets() (in module lkj.iterables)": [[7, "lkj.iterables.compare_sets", false]], "do_nothing() (in module lkj.filesys)": [[4, "lkj.filesys.do_nothing", false]], "enable_sourcing_from_file() (in module lkj.filesys)": [[4, "lkj.filesys.enable_sourcing_from_file", false]], "errorinfo (class in lkj.loggers)": [[8, "lkj.loggers.ErrorInfo", false]], "exclusive_subdict() (in module lkj.dicts)": [[3, "lkj.dicts.exclusive_subdict", false]], "fields_of_string_formats() (in module lkj.strings)": [[10, "lkj.strings.fields_of_string_formats", false]], "filter_greater_than() (in module lkj.funcs)": [[5, "lkj.funcs.filter_greater_than", false]], "find_spec() (lkj.importing.namespaceforwardingfinder method)": [[6, "lkj.importing.NamespaceForwardingFinder.find_spec", false]], "full_path_maker() (in module lkj.funcs)": [[5, "lkj.funcs.full_path_maker", false]], "fullname (lkj.importing.namespaceforwardingloader attribute)": [[6, "lkj.importing.NamespaceForwardingLoader.fullname", false]], "get_app_data_dir() (in module lkj.filesys)": [[4, "lkj.filesys.get_app_data_dir", false]], "get_by_value() (in module lkj.iterables)": [[7, "lkj.iterables.get_by_value", false]], "get_caller_package_name() (in module lkj)": [[1, "lkj.get_caller_package_name", false]], "get_watermarked_dir() (in module lkj.filesys)": [[4, "lkj.filesys.get_watermarked_dir", false]], "has_watermark() (in module lkj.filesys)": [[4, "lkj.filesys.has_watermark", false]], "import_object() (in module lkj.importing)": [[6, "lkj.importing.import_object", false]], "inclusive_subdict() (in module lkj.dicts)": [[3, "lkj.dicts.inclusive_subdict", false]], "indent_lines() (in module lkj.strings)": [[10, "lkj.strings.indent_lines", false]], "index_of() (in module lkj.iterables)": [[7, "lkj.iterables.index_of", false]], "instance_flag_is_set() (in module lkj.loggers)": [[8, "lkj.loggers.instance_flag_is_set", false]], "left_only (lkj.iterables.setscomparisonresult attribute)": [[7, "lkj.iterables.SetsComparisonResult.left_only", false]], "lkj": [[1, "module-lkj", false]], "lkj.chunking": [[2, "module-lkj.chunking", false]], "lkj.dicts": [[3, "module-lkj.dicts", false]], "lkj.filesys": [[4, "module-lkj.filesys", false]], "lkj.funcs": [[5, "module-lkj.funcs", false]], "lkj.importing": [[6, "module-lkj.importing", false]], "lkj.iterables": [[7, "module-lkj.iterables", false]], "lkj.loggers": [[8, "module-lkj.loggers", false]], "lkj.misc": [[9, "module-lkj.misc", false]], "lkj.strings": [[10, "module-lkj.strings", false]], "load_module() (lkj.importing.namespaceforwardingloader method)": [[6, "id0", false], [6, "lkj.importing.NamespaceForwardingLoader.load_module", false]], "log_calls() (in module lkj.loggers)": [[8, "lkj.loggers.log_calls", false]], "module": [[1, "module-lkj", false], [2, "module-lkj.chunking", false], [3, "module-lkj.dicts", false], [4, "module-lkj.filesys", false], [5, "module-lkj.funcs", false], [6, "module-lkj.importing", false], [7, "module-lkj.iterables", false], [8, "module-lkj.loggers", false], [9, "module-lkj.misc", false], [10, "module-lkj.strings", false]], "most_common_indent() (in module lkj.strings)": [[10, "lkj.strings.most_common_indent", false]], "namespaceforwardingfinder (class in lkj.importing)": [[6, "lkj.importing.NamespaceForwardingFinder", false]], "namespaceforwardingloader (class in lkj.importing)": [[6, "lkj.importing.NamespaceForwardingLoader", false]], "print_progress() (in module lkj.loggers)": [[8, "lkj.loggers.print_progress", false]], "print_with_timestamp() (in module lkj.loggers)": [[8, "lkj.loggers.print_with_timestamp", false]], "regex_based_substitution() (in module lkj.strings)": [[10, "lkj.strings.regex_based_substitution", false]], "register_namespace_forwarding() (in module lkj.importing)": [[6, "lkj.importing.register_namespace_forwarding", false]], "rename_file() (in module lkj.filesys)": [[4, "lkj.filesys.rename_file", false]], "return_error_info_on_error() (in module lkj.loggers)": [[8, "lkj.loggers.return_error_info_on_error", false]], "right_only (lkj.iterables.setscomparisonresult attribute)": [[7, "lkj.iterables.SetsComparisonResult.right_only", false]], "setscomparisonresult (class in lkj.iterables)": [[7, "lkj.iterables.SetsComparisonResult", false]], "snake_to_camel() (in module lkj.strings)": [[10, "lkj.strings.snake_to_camel", false]], "source_base (lkj.importing.namespaceforwardingfinder attribute)": [[6, "lkj.importing.NamespaceForwardingFinder.source_base", false]], "source_base (lkj.importing.namespaceforwardingloader attribute)": [[6, "lkj.importing.NamespaceForwardingLoader.source_base", false]], "target_base (lkj.importing.namespaceforwardingfinder attribute)": [[6, "lkj.importing.NamespaceForwardingFinder.target_base", false]], "target_base (lkj.importing.namespaceforwardingloader attribute)": [[6, "lkj.importing.NamespaceForwardingLoader.target_base", false]], "truncate_dict_values() (in module lkj.dicts)": [[3, "lkj.dicts.truncate_dict_values", false]], "truncate_string_with_marker() (in module lkj.strings)": [[10, "lkj.strings.truncate_string_with_marker", false]], "unique_affixes() (in module lkj.strings)": [[10, "lkj.strings.unique_affixes", false]], "user_machine_id() (in module lkj)": [[1, "lkj.user_machine_id", false]], "value_in_interval() (in module lkj.misc)": [[9, "lkj.misc.value_in_interval", false]], "watermark_dir() (in module lkj.filesys)": [[4, "lkj.filesys.watermark_dir", false]], "wrap_text_with_exact_spacing() (in module lkj.loggers)": [[8, "lkj.loggers.wrap_text_with_exact_spacing", false]], "wrapped_print() (in module lkj.loggers)": [[8, "lkj.loggers.wrapped_print", false]], "zip_with_filenames() (in module lkj.funcs)": [[5, "lkj.funcs.zip_with_filenames", false]]}, "objects": {"": [[1, 0, 0, "-", "lkj"]], "lkj": [[1, 1, 1, "", "add_as_attribute_of"], [1, 1, 1, "", "add_attr"], [2, 0, 0, "-", "chunking"], [3, 0, 0, "-", "dicts"], [4, 0, 0, "-", "filesys"], [5, 0, 0, "-", "funcs"], [1, 1, 1, "", "get_caller_package_name"], [6, 0, 0, "-", "importing"], [7, 0, 0, "-", "iterables"], [8, 0, 0, "-", "loggers"], [9, 0, 0, "-", "misc"], [10, 0, 0, "-", "strings"], [1, 1, 1, "", "user_machine_id"]], "lkj.chunking": [[2, 1, 1, "", "chunk_iterable"], [2, 1, 1, "", "chunker"]], "lkj.dicts": [[3, 1, 1, "", "exclusive_subdict"], [3, 1, 1, "", "inclusive_subdict"], [3, 1, 1, "", "truncate_dict_values"]], "lkj.filesys": [[4, 1, 1, "", "do_nothing"], [4, 1, 1, "", "enable_sourcing_from_file"], [4, 1, 1, "", "get_app_data_dir"], [4, 1, 1, "", "get_watermarked_dir"], [4, 1, 1, "", "has_watermark"], [4, 1, 1, "", "rename_file"], [4, 1, 1, "", "watermark_dir"]], "lkj.funcs": [[5, 1, 1, "", "filter_greater_than"], [5, 1, 1, "", "full_path_maker"], [5, 1, 1, "", "zip_with_filenames"]], "lkj.importing": [[6, 2, 1, "", "NamespaceForwardingFinder"], [6, 2, 1, "", "NamespaceForwardingLoader"], [6, 1, 1, "", "import_object"], [6, 1, 1, "", "register_namespace_forwarding"]], "lkj.importing.NamespaceForwardingFinder": [[6, 3, 1, "", "find_spec"], [6, 4, 1, "", "source_base"], [6, 4, 1, "", "target_base"]], "lkj.importing.NamespaceForwardingLoader": [[6, 4, 1, "", "fullname"], [6, 3, 1, "id0", "load_module"], [6, 4, 1, "", "source_base"], [6, 4, 1, "", "target_base"]], "lkj.iterables": [[7, 2, 1, "", "SetsComparisonResult"], [7, 1, 1, "", "compare_sets"], [7, 1, 1, "", "get_by_value"], [7, 1, 1, "", "index_of"]], "lkj.iterables.SetsComparisonResult": [[7, 4, 1, "", "common"], [7, 4, 1, "", "left_only"], [7, 4, 1, "", "right_only"]], "lkj.loggers": [[8, 2, 1, "", "ErrorInfo"], [8, 1, 1, "", "clog"], [8, 1, 1, "", "instance_flag_is_set"], [8, 1, 1, "", "log_calls"], [8, 1, 1, "", "print_progress"], [8, 1, 1, "", "print_with_timestamp"], [8, 1, 1, "", "return_error_info_on_error"], [8, 1, 1, "", "wrap_text_with_exact_spacing"], [8, 1, 1, "", "wrapped_print"]], "lkj.misc": [[9, 1, 1, "", "value_in_interval"]], "lkj.strings": [[10, 1, 1, "", "camel_to_snake"], [10, 1, 1, "", "fields_of_string_formats"], [10, 1, 1, "", "indent_lines"], [10, 1, 1, "", "most_common_indent"], [10, 1, 1, "", "regex_based_substitution"], [10, 1, 1, "", "snake_to_camel"], [10, 1, 1, "", "truncate_string_with_marker"], [10, 1, 1, "", "unique_affixes"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method", "4": "py:attribute"}, "terms": {"": [1, 4, 8, 10], "0": [0, 2, 7, 8, 10], "1": [0, 1, 2, 3, 5, 7, 8, 9], "10": [0, 3, 5, 8], "11": 3, "12": 10, "123": 10, "1234567890": 10, "13": 0, "1479416085": 1, "15": 10, "2": [2, 3, 5, 7, 8, 9, 10], "20": 3, "2024": 0, "3": [2, 3, 7, 8, 9, 10], "30": 8, "4": [2, 3], "5": [2, 3, 5, 7, 8], "6": [2, 3, 5, 8], "66": 3, "7": [2, 3, 5, 9], "8": [2, 3, 5, 9, 10], "80": 8, "88": 8, "890": 10, "9": [3, 5, 9], "90": 10, "A": [3, 4, 6, 7, 8, 10], "But": [1, 8, 10], "By": 4, "For": 4, "If": [1, 2, 3, 4, 6, 7, 8, 9, 10], "In": 1, "It": [2, 4, 8], "Of": 1, "One": [8, 10], "The": [1, 2, 3, 4, 6, 7, 8, 9, 10], "Then": 6, "To": [4, 8], "_": 1, "__doc__": 1, "__init__": 8, "__name__": [1, 8], "_always_log": 8, "_calling_nam": 8, "_clog": 8, "_done_calling_nam": 8, "_github_url_templ": 10, "_helper": 1, "_raise_watermark_error": 4, "abc": [7, 10], "abcd": 10, "abl": 8, "access": 10, "achiev": 4, "acronym": 10, "actual": 4, "ad": [1, 6, 8], "add": [1, 8], "add_as_attribute_of": [0, 1, 11], "add_attr": [0, 1, 11], "add_doc": 1, "add_nam": 1, "affix": 10, "afresh": 4, "after": [3, 4, 8], "aggreg": 10, "alia": 7, "all": [1, 3, 8, 10], "allow": [4, 8], "alreadi": 4, "also": [2, 4, 8], "alwai": 2, "amin": 10, "an": [1, 2, 4, 5, 6, 8, 10], "analyz": 10, "ani": [1, 4, 7, 8, 9], "anoth": [4, 10], "another_testdir": 4, "ap": 10, "app": 10, "app_data_dir": 4, "app_data_rootdir": 4, "appear": 8, "appl": 10, "appli": [4, 7], "applic": 4, "appropri": 10, "apr": 10, "apricot": 10, "ar": [1, 2, 3, 5, 10], "arg": [1, 4, 8], "argument": [1, 2, 4, 9], "assert": [3, 7, 8], "ation": 10, "attr_nam": 1, "attr_val": 1, "attrgett": 8, "attribut": [1, 6, 8, 10], "b": [2, 3, 7, 8, 10], "back": 4, "backward": 6, "bana": 10, "banana": 10, "band": 10, "banda": 10, "bandana": 10, "bar": 1, "base": [5, 6, 10], "base_directori": 5, "basenam": 4, "basic_parse_test": 10, "basicparsetest": 10, "batch": 2, "becaus": 7, "befor": [1, 8], "being": 6, "between": 8, "bool": [2, 4, 8, 9, 10], "both": [1, 2, 7], "built": [4, 8, 9], "byte": 4, "c": [2, 3, 7, 8, 10], "call": [1, 4, 7, 8, 10], "callabl": [1, 2, 4, 8, 9, 10], "callback": 4, "caller": 1, "camel_case_exampl": 10, "camel_str": 10, "camel_to_snak": [0, 10, 11], "camelcas": 10, "camelcaseexampl": 10, "can": [1, 2, 3, 4, 8, 9, 10], "candi": 10, "candl": 10, "capit": 10, "carri": 10, "case": [4, 8, 10], "catch": 8, "caught_error_typ": 8, "chang": [0, 9], "check": [3, 4, 8], "chk_size": 2, "choos": [4, 8], "chunk": [0, 11], "chunk_iter": [0, 2, 11], "chunk_typ": 2, "chunker": [0, 2, 11], "class": [6, 7, 8, 10], "clog": [0, 8, 11], "code": [6, 8], "collect": 2, "com": 1, "common": [7, 8, 10], "compar": 7, "compare_iter": 7, "compare_set": [0, 7, 11], "comparison": 7, "compat": 6, "complet": 1, "complex_token": 10, "complextoken": 10, "comput": 1, "condit": [4, 8], "config": 4, "construct": 10, "contain": [1, 6, 10], "content": 4, "control": [2, 4, 8], "convert": 10, "correctli": 10, "correspond": 6, "count": 5, "cours": 1, "creat": [4, 5, 10], "current": 1, "custom": [4, 6], "d": [3, 7, 8, 9], "data": [4, 5, 7], "databas": 8, "date": 9, "debug": 8, "dec": 0, "decor": [1, 4, 8], "def": [1, 4, 8], "default": [1, 2, 3, 4, 8, 9, 10], "delet": 4, "depend": 4, "deprec": 6, "desir": 10, "detect": [4, 6, 10], "determin": 10, "dflt_error_info_processor": 8, "dict": [0, 2, 5, 7, 8, 10, 11], "dictionari": [3, 7, 10], "differ": 8, "directori": [4, 5], "dirnam": 4, "dirpath": 4, "displai": 8, "display_tim": 8, "divid": 2, "divis": 8, "do": [1, 4, 6, 8], "do_noth": [0, 4, 11], "docstr": 10, "doctest": 6, "doe": [2, 4, 8], "doesn": 4, "don": 4, "done": [7, 8], "dot": 6, "dot_path": 6, "dry_run": 4, "duplic": 10, "dynam": [6, 8], "e": [2, 3, 8, 9, 10], "each": [2, 5, 8, 10], "effect": 2, "effici": 2, "egress": 10, "egress_msg": 8, "element": [2, 5, 7], "els": 4, "enabl": [4, 6], "enable_sourcing_from_fil": [0, 4, 11], "end": 8, "ensur": [5, 8], "error": [4, 8], "error_info_processor": 8, "errorinfo": [0, 8, 11], "etc": [2, 5, 7], "even": 2, "exactli": 8, "examin": 10, "exampl": [2, 3, 4, 5, 7, 8, 10], "exce": 8, "except": 8, "exclud": 3, "exclusive_subdict": [0, 3, 11], "exec_modul": 6, "execut": 8, "exist": [4, 6, 8], "exist_ok": 4, "exit": 8, "expect": 2, "explicitli": 1, "extra": 2, "extract": 10, "f": [1, 4, 6, 8, 9], "factori": 4, "failur": 6, "fals": [2, 4, 8, 9, 10], "favor": 6, "fewer": 2, "ff": 9, "field": [7, 10], "fields_of_string_format": [0, 10, 11], "file": [4, 5, 8], "file1": 5, "file2": 5, "file_001": 5, "file_002": 5, "file_004": 5, "file_005": 5, "file_006": 5, "filenam": 5, "filesi": [0, 11], "filter": [2, 5], "filter_greater_than": [0, 5, 11], "filter_greater_than_5": 5, "find": [6, 10], "find_spec": 6, "finder": 6, "first": [4, 7, 10], "fix": 8, "flag": 8, "flag_attr": 8, "fli": 10, "flight": 10, "flow": 10, "flower": 10, "foo": [1, 8], "formatt": 10, "forward": 6, "found": 10, "framework": 4, "from": [1, 3, 4, 6, 7, 8, 9, 10], "full": [4, 5, 6], "full_path": 5, "full_path_mak": [0, 5, 11], "fullnam": 6, "func": [0, 4, 8, 11], "func_nam": 8, "function": [1, 4, 5, 6, 7, 8, 9, 10], "functool": [4, 7, 8, 10], "g": [2, 8, 10], "ge": 9, "gener": 5, "generic_func": 1, "get": [1, 2, 4, 6, 7, 8], "get_app_data_dir": [0, 4, 11], "get_by_id": 7, "get_by_valu": [0, 7, 11], "get_caller_package_nam": [0, 1, 11], "get_val": 9, "get_value_of_b": 7, "get_watermarked_dir": [0, 4, 11], "gettempdir": 4, "github": 1, "give": [1, 2], "given": [1, 5, 10], "grape": 10, "greater": 5, "guarante": 7, "h": 8, "ha": [1, 4, 10], "handl": [2, 10], "happen": 4, "has_watermark": [0, 4, 11], "hasattr": [1, 8], "have": [2, 3, 6, 8, 10], "hcp": 6, "hello": 8, "helper": [1, 8], "here": 10, "hh": 8, "home": 4, "how": 4, "html_parser": 10, "htmlparser": 10, "http": 1, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "i2mint": 1, "id": [1, 7], "ident": [9, 10], "if_does_not_exist": 4, "if_exist": 4, "if_watermark_validation_fail": 4, "ignor": 10, "ignore_error": 4, "ignore_first_lin": 10, "imb": 6, "imbed_data_prep": 6, "import": [0, 1, 4, 7, 8, 9, 10, 11], "import_object": [0, 6, 11], "importerror": 6, "includ": [2, 3], "include_tail": 2, "inclusive_subdict": [0, 3, 11], "inde": 4, "indent": 10, "indent_lin": [0, 10, 11], "index": [0, 7], "index_of": [0, 7, 11], "indic": 3, "info": 8, "ingress": 10, "ingress_msg": 8, "input": [2, 3, 8, 10], "insert": [3, 6, 10], "instanc": 8, "instance_flag_is_set": [0, 8, 11], "instead": [8, 10], "int": [2, 3, 7, 8], "intent": 1, "invers": 10, "investig": 3, "is_maximum": 9, "is_minimum": 9, "isinst": 8, "issu": 1, "issuecom": 1, "item": [2, 8, 10], "item1": 8, "item10": 8, "item2": 8, "item3": 8, "item4": 8, "item5": 8, "item6": 8, "item7": 8, "item8": 8, "item9": 8, "itemgett": 9, "iter": [0, 2, 3, 5, 8, 10, 11], "its": [1, 10], "iz": 7, "j": 8, "join": [4, 6, 10], "jumpstart": 1, "just": [4, 7, 8], "kei": [2, 3, 7, 10], "kit": 1, "kt": [2, 7], "kwarg": [1, 4, 8], "label": 5, "lambda": [2, 8, 9], "larg": 3, "large_dict": 3, "last": [0, 2, 7, 10], "le": 9, "lead": 1, "least": 1, "left": 7, "left_limit": 10, "left_onli": 7, "len": 2, "length": [3, 8, 10], "less": 2, "lightweight": 1, "like": [3, 5, 10], "limit": 10, "line": [8, 10], "line_prefix": 8, "line_sep": 10, "list": [2, 3, 4, 5, 7, 8, 9, 10], "list_of_dict": 7, "listdir": 4, "litter": 8, "lkj": 11, "ll": [4, 6, 8], "load": 6, "load_modul": 6, "loader": 6, "local": 8, "log": [3, 8], "log_cal": [0, 8, 11], "log_condit": 8, "log_func": 8, "log_if_verbose_set_to_tru": 8, "logger": [0, 11], "long": 3, "longer": [3, 10], "look": 3, "lt": 9, "main": [1, 4], "make": [4, 8], "make_dir": 4, "makedir": 4, "manual": 4, "map": [2, 3, 7, 9], "marker": 10, "max": 3, "max_list_s": 3, "max_string_s": 3, "max_val": 9, "max_width": 8, "maximum": [3, 8, 10], "mdat": 6, "meant": 10, "messag": 8, "meta_path": 6, "method": 6, "middl": [3, 10], "middle_mark": [3, 10], "min_val": 9, "mini": 4, "misc": [0, 11], "miscellan": 9, "mkdir": 4, "mm": 8, "modif": 8, "modul": [0, 1, 3, 6, 8], "more": 3, "most": [7, 10], "most_common_ind": [0, 10, 11], "msg": 8, "much": 3, "multipli": 8, "must": 6, "my": 1, "my_func": 1, "my_watermark": 4, "myclass": 8, "mytestdir": 4, "n": [8, 10], "name": [1, 4, 5, 6, 7, 8, 10], "namedtupl": 7, "namespac": [1, 6], "namespaceforwardingfind": [0, 6, 11], "namespaceforwardingload": [0, 6, 11], "nanoth": 10, "need": 4, "nest": 3, "never": 5, "new": [3, 8], "newlin": 8, "nf": 8, "non": [2, 4], "none": [1, 2, 3, 4, 6, 8, 9, 10], "nonexistent_dir": 4, "note": [1, 2, 7, 8, 10], "noth": 4, "notify_user_that_path_does_not_exist": 4, "now": 8, "number": 7, "o": [4, 6], "obj": [1, 8], "object": [1, 6, 8], "occur": 8, "often": 10, "onli": [3, 7, 8], "oper": [8, 9], "option": [3, 4, 8], "orang": 10, "order": [5, 7], "other": [3, 10], "otherwis": [2, 4], "our": 4, "out": [3, 10], "output": [4, 8], "over": 8, "overlap": 2, "packag": [1, 6], "page": 0, "pair": 10, "paramet": [1, 2, 3, 4, 6, 7, 8, 10], "parametr": [8, 10], "partial": [1, 4, 7, 8, 10], "pass": 1, "path": [4, 5, 6], "perform": 10, "persist": 8, "place": 8, "point": [1, 10], "pollut": 1, "popul": 4, "possibli": 8, "postprocess": 10, "prefix": 10, "preprocess": 10, "preserv": 8, "print": [3, 4, 8, 10], "print_func": 8, "print_progress": [0, 8, 11], "print_with_timestamp": [0, 8, 11], "probabl": 2, "process": 8, "properli": 6, "provid": [1, 4, 6, 8], "put": 6, "python": 10, "quot": 10, "rais": [4, 6, 10], "rang": [2, 5, 7], "re": 10, "read": 4, "realiti": 1, "realli": 1, "recent": [7, 10], "recogniz": 4, "recreat": 4, "reduc": 3, "refresh": 8, "regex": 10, "regex_based_substitut": [0, 10, 11], "regist": 6, "register_namespace_forward": [0, 6, 11], "relat": 6, "releas": 0, "remain": 2, "remov": 1, "renam": 4, "rename_fil": [0, 4, 11], "renamer_funct": 4, "replac": 10, "replace_thi": 10, "respons": 4, "result": [4, 7], "return": [1, 2, 3, 4, 6, 7, 8, 10], "return_error_info_on_error": [0, 8, 11], "right": 7, "right_limit": 10, "right_onli": 7, "rminat": 10, "rmtree": 4, "root": 4, "rootdir": 4, "runner": 4, "sai": [5, 6, 8], "same": 3, "search": 0, "second": 7, "see": [1, 4], "segument": 2, "self": 8, "send": 8, "sep": [8, 10], "separ": 8, "sequenc": [7, 10], "sequenti": 5, "servic": 8, "set": [2, 3, 6, 7, 8, 10], "setscomparisonresult": [0, 7, 11], "shorter": 10, "should": 8, "shutil": 4, "simple_example_test": 10, "simpleexampletest": 10, "simpler": 2, "sinc": [8, 10], "singl": 10, "size": [2, 3], "skip": 6, "slice": 2, "snake_cas": 10, "snake_str": 10, "snake_to_camel": [0, 10, 11], "so": 1, "some": [4, 8], "someth": 4, "sometim": 8, "sort": 10, "sourc": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "source_bas": 6, "space": 3, "spec": 6, "specif": [2, 4, 10], "specifi": [1, 4, 8], "split": 10, "sprintf": 8, "ss": 8, "start": [1, 8], "start_idx": 5, "statement": 8, "store": 4, "str": [1, 3, 4, 6, 8, 10], "string": [0, 3, 4, 6, 8, 11], "structur": [3, 4], "style": 8, "su": 10, "subdirectori": 4, "substitut": 10, "suffix": 10, "suitabl": 4, "sum": 10, "supercalifragilisticexpialidoci": 10, "suppress": 8, "sy": 6, "system": 4, "t": [2, 4, 8, 9], "tab": 1, "take": [1, 3, 4, 8], "taken": 4, "target": 6, "target_bas": 6, "tell": 4, "tempfil": 4, "templat": 10, "termin": 10, "test": 10, "testdir": 4, "tester": 10, "testi": 10, "text": 8, "than": [2, 3, 5, 10], "thei": [2, 8], "them": 4, "thi": [1, 2, 3, 4, 6, 7, 8, 10], "though": 2, "thought": 2, "threshold": 5, "through": 4, "time": 8, "timestamp": 8, "tip": 8, "too": 3, "tool": [2, 3, 5, 6, 7, 9], "total": 8, "traceback": [7, 8, 10], "track": 8, "tripl": 10, "true": [1, 2, 4, 6, 8, 9, 10], "truncat": [3, 10], "truncate_dict_valu": [0, 3, 11], "truncate_str": 10, "truncate_string_with_mark": [0, 10, 11], "tupl": [2, 7, 8, 10], "two": 7, "type": [2, 4, 6, 7, 8, 9, 10], "typic": 4, "u": [4, 10], "underscor": 1, "uniqu": [5, 10], "unique_affix": [0, 10, 11], "unless": 4, "us": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "usag": [6, 8], "user": [1, 4, 8], "user_machine_id": [0, 1, 11], "usual": [4, 8, 10], "util": [4, 8, 10], "valid": 4, "valu": [1, 2, 3, 7], "value_in_interv": [0, 9, 11], "valueerror": [7, 10], "variabl": [8, 10], "verbos": [4, 8], "verifi": 4, "versbos": 8, "view": [1, 10], "vt": [2, 7], "wa": 4, "want": [1, 3, 4, 7, 8, 9, 10], "watermark": 4, "watermark_dir": [0, 4, 11], "watermark_testdir": 4, "we": [4, 8], "what": [4, 8], "when": [3, 6, 7, 8, 10], "where": [2, 3, 8, 10], "whether": [8, 10], "which": 1, "while": 8, "whose": 4, "width": 8, "with_that": 10, "without": 1, "word": 8, "work": [3, 5], "would": 8, "wrap": 8, "wrap_text_with_exact_spac": [0, 8, 11], "wrapped_print": [0, 8, 11], "write": 4, "write_output": 4, "x": [2, 8, 9, 10], "xml_http_request_test": 10, "xmlhttprequesttest": 10, "xy": 10, "xyz": 10, "y": [2, 8], "you": [1, 2, 3, 4, 6, 7, 8, 9, 10], "your": [4, 8], "z": [2, 7], "zero": 8, "zerodivisionerror": 8, "zip": 5, "zip_fil": 5, "zip_with_filenam": [0, 5, 11]}, "titles": ["Welcome to lkj\u2019s documentation!", "lkj", "lkj.chunking", "lkj.dicts", "lkj.filesys", "lkj.funcs", "lkj.importing", "lkj.iterables", "lkj.loggers", "lkj.misc", "lkj.strings", "<no title>"], "titleterms": {"": 0, "chunk": 2, "content": [0, 11], "dict": 3, "document": 0, "filesi": 4, "func": 5, "import": 6, "indic": 0, "iter": 7, "lkj": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "logger": 8, "misc": 9, "string": 10, "tabl": 0, "welcom": 0}})
\ No newline at end of file
diff --git a/table_of_contents.html b/table_of_contents.html
index 44de596..257108d 100644
--- a/table_of_contents.html
+++ b/table_of_contents.html
@@ -48,6 +48,7 @@
Contents: