From 2ce918672b98ffb3b05706b1b8205ddf64025cb9 Mon Sep 17 00:00:00 2001
From: Vladimir Roncevic
Date: Mon, 3 Nov 2025 18:18:52 +0100
Subject: [PATCH] [codecipher] Update docs, version
---
codecipher/a1z52n62/__init__.py | 2 +-
codecipher/a1z52n62/decode.py | 2 +-
codecipher/a1z52n62/encode.py | 2 +-
codecipher/atbs/__init__.py | 2 +-
codecipher/atbs/decode.py | 2 +-
codecipher/atbs/encode.py | 2 +-
codecipher/atbs/lookup_table.py | 2 +-
codecipher/b64/__init__.py | 2 +-
codecipher/b64/decode.py | 2 +-
codecipher/b64/encode.py | 2 +-
codecipher/caesar/__init__.py | 2 +-
codecipher/caesar/decode.py | 2 +-
codecipher/caesar/encode.py | 2 +-
codecipher/vernam/__init__.py | 2 +-
codecipher/vernam/decode.py | 2 +-
codecipher/vernam/encode.py | 2 +-
codecipher/vigenere/__init__.py | 2 +-
codecipher/vigenere/decode.py | 2 +-
codecipher/vigenere/encode.py | 2 +-
codecipher/vigenere/key_generator.py | 2 +-
codecipher/vigenere/lookup_table.py | 2 +-
docs/build/doctrees/environment.pickle | Bin 765616 -> 765616 bytes
.../html/_modules/codecipher/a1z52n62.html | 2 +-
.../_modules/codecipher/a1z52n62/decode.html | 2 +-
.../_modules/codecipher/a1z52n62/encode.html | 2 +-
docs/build/html/_modules/codecipher/atbs.html | 2 +-
.../html/_modules/codecipher/atbs/decode.html | 2 +-
.../html/_modules/codecipher/atbs/encode.html | 2 +-
docs/build/html/_modules/codecipher/b64.html | 2 +-
.../html/_modules/codecipher/b64/decode.html | 2 +-
.../html/_modules/codecipher/b64/encode.html | 2 +-
.../html/_modules/codecipher/caesar.html | 2 +-
.../_modules/codecipher/caesar/decode.html | 2 +-
.../_modules/codecipher/caesar/encode.html | 2 +-
.../html/_modules/codecipher/vernam.html | 2 +-
.../_modules/codecipher/vernam/decode.html | 2 +-
.../_modules/codecipher/vernam/encode.html | 2 +-
.../html/_modules/codecipher/vigenere.html | 2 +-
.../_modules/codecipher/vigenere/decode.html | 2 +-
.../_modules/codecipher/vigenere/encode.html | 2 +-
.../codecipher/vigenere/key_generator.html | 2 +-
.../codecipher/vigenere/lookup_table.html | 2 +-
docs/build/html/objects.inv | Bin 1243 -> 1243 bytes
docs/source/conf.py | 2 +-
setup.py | 4 ++--
tests/a1z52n62_test.py | 2 +-
tests/atbs_test.py | 2 +-
tests/b64_test.py | 2 +-
tests/caesar_test.py | 2 +-
tests/codecipher_coverage.json | 2 +-
tests/codecipher_coverage.xml | 2 +-
tests/htmlcov/class_index.html | 4 ++--
tests/htmlcov/function_index.html | 4 ++--
tests/htmlcov/index.html | 4 ++--
tests/htmlcov/status.json | 2 +-
.../z_094bd7de807a5f14___init___py.html | 6 +++---
.../htmlcov/z_094bd7de807a5f14_decode_py.html | 6 +++---
.../htmlcov/z_094bd7de807a5f14_encode_py.html | 6 +++---
.../z_75799433d8182c47___init___py.html | 6 +++---
.../htmlcov/z_75799433d8182c47_decode_py.html | 6 +++---
.../htmlcov/z_75799433d8182c47_encode_py.html | 6 +++---
.../z_75799433d8182c47_key_generator_py.html | 6 +++---
.../z_75799433d8182c47_lookup_table_py.html | 6 +++---
.../z_7dc3960ecaf412e4___init___py.html | 4 ++--
.../z_8f54ab6b5b508ca0___init___py.html | 6 +++---
.../htmlcov/z_8f54ab6b5b508ca0_decode_py.html | 6 +++---
.../htmlcov/z_8f54ab6b5b508ca0_encode_py.html | 6 +++---
.../z_96938f9400a5cdf6___init___py.html | 6 +++---
.../htmlcov/z_96938f9400a5cdf6_decode_py.html | 6 +++---
.../htmlcov/z_96938f9400a5cdf6_encode_py.html | 6 +++---
.../z_9927f90504198b80___init___py.html | 6 +++---
.../htmlcov/z_9927f90504198b80_decode_py.html | 6 +++---
.../htmlcov/z_9927f90504198b80_encode_py.html | 6 +++---
.../z_9927f90504198b80_lookup_table_py.html | 6 +++---
.../z_aba196749d301797___init___py.html | 6 +++---
.../htmlcov/z_aba196749d301797_decode_py.html | 6 +++---
.../htmlcov/z_aba196749d301797_encode_py.html | 6 +++---
tests/vernam_test.py | 2 +-
tests/vigenere_test.py | 2 +-
79 files changed, 124 insertions(+), 124 deletions(-)
diff --git a/codecipher/a1z52n62/__init__.py b/codecipher/a1z52n62/__init__.py
index 899450c..a7a43aa 100644
--- a/codecipher/a1z52n62/__init__.py
+++ b/codecipher/a1z52n62/__init__.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/a1z52n62/decode.py b/codecipher/a1z52n62/decode.py
index 26be5a4..29d98c2 100644
--- a/codecipher/a1z52n62/decode.py
+++ b/codecipher/a1z52n62/decode.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/a1z52n62/encode.py b/codecipher/a1z52n62/encode.py
index d121123..f1617cc 100644
--- a/codecipher/a1z52n62/encode.py
+++ b/codecipher/a1z52n62/encode.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/atbs/__init__.py b/codecipher/atbs/__init__.py
index 6301b4c..e807f88 100644
--- a/codecipher/atbs/__init__.py
+++ b/codecipher/atbs/__init__.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/atbs/decode.py b/codecipher/atbs/decode.py
index 21f9a3e..9296915 100644
--- a/codecipher/atbs/decode.py
+++ b/codecipher/atbs/decode.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/atbs/encode.py b/codecipher/atbs/encode.py
index 0305506..8117c34 100644
--- a/codecipher/atbs/encode.py
+++ b/codecipher/atbs/encode.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/atbs/lookup_table.py b/codecipher/atbs/lookup_table.py
index 5b24e76..861e847 100644
--- a/codecipher/atbs/lookup_table.py
+++ b/codecipher/atbs/lookup_table.py
@@ -25,7 +25,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/b64/__init__.py b/codecipher/b64/__init__.py
index 5be2e31..2898d7b 100644
--- a/codecipher/b64/__init__.py
+++ b/codecipher/b64/__init__.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/b64/decode.py b/codecipher/b64/decode.py
index b3117d8..2866de2 100644
--- a/codecipher/b64/decode.py
+++ b/codecipher/b64/decode.py
@@ -28,7 +28,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/b64/encode.py b/codecipher/b64/encode.py
index 7bf6ae5..6c20609 100644
--- a/codecipher/b64/encode.py
+++ b/codecipher/b64/encode.py
@@ -28,7 +28,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/caesar/__init__.py b/codecipher/caesar/__init__.py
index f299f48..e3c74bd 100644
--- a/codecipher/caesar/__init__.py
+++ b/codecipher/caesar/__init__.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/caesar/decode.py b/codecipher/caesar/decode.py
index d64a273..bb34768 100644
--- a/codecipher/caesar/decode.py
+++ b/codecipher/caesar/decode.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/caesar/encode.py b/codecipher/caesar/encode.py
index 69d50dd..7da63d0 100644
--- a/codecipher/caesar/encode.py
+++ b/codecipher/caesar/encode.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vernam/__init__.py b/codecipher/vernam/__init__.py
index 3822bae..bf2a717 100644
--- a/codecipher/vernam/__init__.py
+++ b/codecipher/vernam/__init__.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vernam/decode.py b/codecipher/vernam/decode.py
index 203ede9..719840e 100644
--- a/codecipher/vernam/decode.py
+++ b/codecipher/vernam/decode.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vernam/encode.py b/codecipher/vernam/encode.py
index efcbdfc..c005830 100644
--- a/codecipher/vernam/encode.py
+++ b/codecipher/vernam/encode.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vigenere/__init__.py b/codecipher/vigenere/__init__.py
index 2dd27c5..3ef8822 100644
--- a/codecipher/vigenere/__init__.py
+++ b/codecipher/vigenere/__init__.py
@@ -35,7 +35,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vigenere/decode.py b/codecipher/vigenere/decode.py
index 9c108a3..72c86c5 100644
--- a/codecipher/vigenere/decode.py
+++ b/codecipher/vigenere/decode.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vigenere/encode.py b/codecipher/vigenere/encode.py
index 44890d2..3375e4b 100644
--- a/codecipher/vigenere/encode.py
+++ b/codecipher/vigenere/encode.py
@@ -34,7 +34,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vigenere/key_generator.py b/codecipher/vigenere/key_generator.py
index 6bc47ab..bdc9a51 100644
--- a/codecipher/vigenere/key_generator.py
+++ b/codecipher/vigenere/key_generator.py
@@ -27,7 +27,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/codecipher/vigenere/lookup_table.py b/codecipher/vigenere/lookup_table.py
index 30ff8db..658f190 100644
--- a/codecipher/vigenere/lookup_table.py
+++ b/codecipher/vigenere/lookup_table.py
@@ -26,7 +26,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle
index 364a3e079c4fc33ea9d23587c6b3b21d09b8e054..2c46fc718596c89ab1ba20f387b06e4d6809657a 100644
GIT binary patch
delta 8815
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
delta 8970
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
diff --git a/docs/build/html/_modules/codecipher/a1z52n62.html b/docs/build/html/_modules/codecipher/a1z52n62.html
index 482c58d..b99e95f 100644
--- a/docs/build/html/_modules/codecipher/a1z52n62.html
+++ b/docs/build/html/_modules/codecipher/a1z52n62.html
@@ -72,7 +72,7 @@ Source code for codecipher.a1z52n62
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/a1z52n62/decode.html b/docs/build/html/_modules/codecipher/a1z52n62/decode.html
index 6fd78a9..0173374 100644
--- a/docs/build/html/_modules/codecipher/a1z52n62/decode.html
+++ b/docs/build/html/_modules/codecipher/a1z52n62/decode.html
@@ -66,7 +66,7 @@ Source code for codecipher.a1z52n62.decode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/a1z52n62/encode.html b/docs/build/html/_modules/codecipher/a1z52n62/encode.html
index 9855019..0852b80 100644
--- a/docs/build/html/_modules/codecipher/a1z52n62/encode.html
+++ b/docs/build/html/_modules/codecipher/a1z52n62/encode.html
@@ -66,7 +66,7 @@ Source code for codecipher.a1z52n62.encode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/atbs.html b/docs/build/html/_modules/codecipher/atbs.html
index e79f189..f7dadff 100644
--- a/docs/build/html/_modules/codecipher/atbs.html
+++ b/docs/build/html/_modules/codecipher/atbs.html
@@ -72,7 +72,7 @@ Source code for codecipher.atbs
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/atbs/decode.html b/docs/build/html/_modules/codecipher/atbs/decode.html
index f3457cd..658abc7 100644
--- a/docs/build/html/_modules/codecipher/atbs/decode.html
+++ b/docs/build/html/_modules/codecipher/atbs/decode.html
@@ -73,7 +73,7 @@ Source code for codecipher.atbs.decode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/atbs/encode.html b/docs/build/html/_modules/codecipher/atbs/encode.html
index f23820c..8552582 100644
--- a/docs/build/html/_modules/codecipher/atbs/encode.html
+++ b/docs/build/html/_modules/codecipher/atbs/encode.html
@@ -73,7 +73,7 @@ Source code for codecipher.atbs.encode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/b64.html b/docs/build/html/_modules/codecipher/b64.html
index 16c4c0c..b525353 100644
--- a/docs/build/html/_modules/codecipher/b64.html
+++ b/docs/build/html/_modules/codecipher/b64.html
@@ -72,7 +72,7 @@ Source code for codecipher.b64
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/b64/decode.html b/docs/build/html/_modules/codecipher/b64/decode.html
index 28dd00b..6a4beff 100644
--- a/docs/build/html/_modules/codecipher/b64/decode.html
+++ b/docs/build/html/_modules/codecipher/b64/decode.html
@@ -67,7 +67,7 @@ Source code for codecipher.b64.decode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/b64/encode.html b/docs/build/html/_modules/codecipher/b64/encode.html
index 66cdf78..01e24a7 100644
--- a/docs/build/html/_modules/codecipher/b64/encode.html
+++ b/docs/build/html/_modules/codecipher/b64/encode.html
@@ -67,7 +67,7 @@ Source code for codecipher.b64.encode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/caesar.html b/docs/build/html/_modules/codecipher/caesar.html
index c87a550..15d52e2 100644
--- a/docs/build/html/_modules/codecipher/caesar.html
+++ b/docs/build/html/_modules/codecipher/caesar.html
@@ -72,7 +72,7 @@ Source code for codecipher.caesar
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/caesar/decode.html b/docs/build/html/_modules/codecipher/caesar/decode.html
index f594e9f..8ea8621 100644
--- a/docs/build/html/_modules/codecipher/caesar/decode.html
+++ b/docs/build/html/_modules/codecipher/caesar/decode.html
@@ -66,7 +66,7 @@ Source code for codecipher.caesar.decode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/caesar/encode.html b/docs/build/html/_modules/codecipher/caesar/encode.html
index fb6ce64..4003b25 100644
--- a/docs/build/html/_modules/codecipher/caesar/encode.html
+++ b/docs/build/html/_modules/codecipher/caesar/encode.html
@@ -66,7 +66,7 @@ Source code for codecipher.caesar.encode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vernam.html b/docs/build/html/_modules/codecipher/vernam.html
index 9d7ca98..4ddc0b5 100644
--- a/docs/build/html/_modules/codecipher/vernam.html
+++ b/docs/build/html/_modules/codecipher/vernam.html
@@ -72,7 +72,7 @@ Source code for codecipher.vernam
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vernam/decode.html b/docs/build/html/_modules/codecipher/vernam/decode.html
index 45b7e89..87306ea 100644
--- a/docs/build/html/_modules/codecipher/vernam/decode.html
+++ b/docs/build/html/_modules/codecipher/vernam/decode.html
@@ -66,7 +66,7 @@ Source code for codecipher.vernam.decode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vernam/encode.html b/docs/build/html/_modules/codecipher/vernam/encode.html
index 55eb739..10349c8 100644
--- a/docs/build/html/_modules/codecipher/vernam/encode.html
+++ b/docs/build/html/_modules/codecipher/vernam/encode.html
@@ -66,7 +66,7 @@ Source code for codecipher.vernam.encode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vigenere.html b/docs/build/html/_modules/codecipher/vigenere.html
index 18d789d..f87b9cc 100644
--- a/docs/build/html/_modules/codecipher/vigenere.html
+++ b/docs/build/html/_modules/codecipher/vigenere.html
@@ -73,7 +73,7 @@ Source code for codecipher.vigenere
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vigenere/decode.html b/docs/build/html/_modules/codecipher/vigenere/decode.html
index 0ef04f3..4306219 100644
--- a/docs/build/html/_modules/codecipher/vigenere/decode.html
+++ b/docs/build/html/_modules/codecipher/vigenere/decode.html
@@ -73,7 +73,7 @@ Source code for codecipher.vigenere.decode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vigenere/encode.html b/docs/build/html/_modules/codecipher/vigenere/encode.html
index 7585dc7..35e43f0 100644
--- a/docs/build/html/_modules/codecipher/vigenere/encode.html
+++ b/docs/build/html/_modules/codecipher/vigenere/encode.html
@@ -73,7 +73,7 @@ Source code for codecipher.vigenere.encode
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vigenere/key_generator.html b/docs/build/html/_modules/codecipher/vigenere/key_generator.html
index 6c2286c..1133d6e 100644
--- a/docs/build/html/_modules/codecipher/vigenere/key_generator.html
+++ b/docs/build/html/_modules/codecipher/vigenere/key_generator.html
@@ -66,7 +66,7 @@ Source code for codecipher.vigenere.key_generator
__copyright__
: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-
__version__: str = '1.4.8'
+
__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/_modules/codecipher/vigenere/lookup_table.html b/docs/build/html/_modules/codecipher/vigenere/lookup_table.html
index aba76cc..a107605 100644
--- a/docs/build/html/_modules/codecipher/vigenere/lookup_table.html
+++ b/docs/build/html/_modules/codecipher/vigenere/lookup_table.html
@@ -65,7 +65,7 @@
Source code for codecipher.vigenere.lookup_table
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-
__version__: str = '1.4.8'
+
__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv
index 28c94bec193212a106fe14c83e6c25e3b6b04494..4302aa6a9805df05abce10b81e6d3a26b49f0dde 100644
GIT binary patch
delta 12
Tcmcc3d7E>B6Qkuu=NT*jAH)P@
delta 12
Tcmcc3d7E>B6QjjO=NT*jAHM`-
diff --git a/docs/source/conf.py b/docs/source/conf.py
index e82b3ad..6800392 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -29,7 +29,7 @@
project: str = 'codecipher'
project_copyright: str = '2025, Vladimir Roncevic
'
author: str = 'Vladimir Roncevic '
-version: str = '1.4.8'
+version: str = '1.4.9'
release: str = 'https://github.com/electux/codecipher/releases'
extensions: List[str] = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
templates_path: List[str] = ['_templates']
diff --git a/setup.py b/setup.py
index faa4cea..ec11ec3 100644
--- a/setup.py
+++ b/setup.py
@@ -29,7 +29,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
@@ -50,7 +50,7 @@
PYP_CLASSIFIERS: List[str] = SUPPORTED_PY_VERSIONS
setup(
name='codecipher',
- version='1.4.8',
+ version='1.4.9',
description='Python Cipher Utilities',
author='Vladimir Roncevic',
author_email='elektron.ronca@gmail.com',
diff --git a/tests/a1z52n62_test.py b/tests/a1z52n62_test.py
index 5fee0c4..7886844 100644
--- a/tests/a1z52n62_test.py
+++ b/tests/a1z52n62_test.py
@@ -36,7 +36,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/dev/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/tests/atbs_test.py b/tests/atbs_test.py
index 47ec2c6..844fce8 100644
--- a/tests/atbs_test.py
+++ b/tests/atbs_test.py
@@ -36,7 +36,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/dev/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/tests/b64_test.py b/tests/b64_test.py
index cb419dd..0626906 100644
--- a/tests/b64_test.py
+++ b/tests/b64_test.py
@@ -36,7 +36,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/dev/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/tests/caesar_test.py b/tests/caesar_test.py
index 3588751..2b11b5b 100644
--- a/tests/caesar_test.py
+++ b/tests/caesar_test.py
@@ -36,7 +36,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/dev/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/tests/codecipher_coverage.json b/tests/codecipher_coverage.json
index aa2784d..38d685f 100644
--- a/tests/codecipher_coverage.json
+++ b/tests/codecipher_coverage.json
@@ -1 +1 @@
-{"meta": {"format": 3, "version": "7.6.10", "timestamp": "2025-11-01T07:55:09.848059", "branch_coverage": false, "show_contexts": false}, "files": {"/data/dev/python/codecipher/github/codecipher/codecipher/__init__.py": {"executed_lines": [3], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/a1z52n62/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"A1z52N62.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"A1z52N62": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/a1z52n62/decode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 86, 87, 88, 89, 90, 91, 92, 94, 96, 98, 99], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"A1z52N62Decode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "A1z52N62Decode.decode": {"executed_lines": [86, 87, 88, 89, 90, 91, 92, 94, 96, 98, 99], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"A1z52N62Decode": {"executed_lines": [62, 86, 87, 88, 89, 90, 91, 92, 94, 96, 98, 99], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/a1z52n62/encode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"A1z52N62Encode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "A1z52N62Encode.encode": {"executed_lines": [86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"A1z52N62Encode": {"executed_lines": [62, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"AlephTawBetShin.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"AlephTawBetShin": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/decode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 69, 71, 72, 84, 93, 94, 95, 96, 97], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [81, 82], "excluded_lines": [29, 31], "functions": {"AlephTawBetShinDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "AlephTawBetShinDecode.decode": {"executed_lines": [93, 94, 95, 96, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"AlephTawBetShinDecode": {"executed_lines": [69, 93, 94, 95, 96, 97], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/encode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 69, 71, 72, 84, 93, 94, 95, 96, 97], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [81, 82], "excluded_lines": [29, 31], "functions": {"AlephTawBetShinEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "AlephTawBetShinEncode.encode": {"executed_lines": [93, 94, 95, 96, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"AlephTawBetShinEncode": {"executed_lines": [69, 93, 94, 95, 96, 97], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/lookup_table.py": {"executed_lines": [3, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [3, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/b64/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"B64.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"B64": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/b64/decode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 63, 65, 66, 78, 87, 88], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": [], "functions": {"B64Decode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "B64Decode.decode": {"executed_lines": [87, 88], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"B64Decode": {"executed_lines": [63, 87, 88], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/b64/encode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 63, 65, 66, 78, 87, 88], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": [], "functions": {"B64Encode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "B64Encode.encode": {"executed_lines": [87, 88], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"B64Encode": {"executed_lines": [63, 87, 88], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/caesar/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"Caesar.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"Caesar": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/caesar/decode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 39, "num_statements": 41, "percent_covered": 95.1219512195122, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"CaesarDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "CaesarDecode.decode": {"executed_lines": [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CaesarDecode": {"executed_lines": [62, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/caesar/encode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 39, "num_statements": 41, "percent_covered": 95.1219512195122, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"CaesarEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "CaesarEncode.encode": {"executed_lines": [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CaesarEncode": {"executed_lines": [62, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vernam/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"Vernam.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"Vernam": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vernam/decode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 34, "num_statements": 36, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"VernamDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "VernamDecode.decode": {"executed_lines": [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VernamDecode": {"executed_lines": [62, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vernam/encode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 34, "num_statements": 36, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"VernamEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "VernamEncode.encode": {"executed_lines": [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VernamEncode": {"executed_lines": [62, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 57, 63], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [30, 32], "functions": {"Vigenere.__init__": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 57], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [30, 32]}}, "classes": {"Vigenere": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 57], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [30, 32]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/decode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 70, 72, 73, 85, 99, 100, 101, 102, 103, 105, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [82, 83], "excluded_lines": [29, 31], "functions": {"VigenereDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "VigenereDecode._split_data_decode": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VigenereDecode.decode": {"executed_lines": [118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"VigenereDecode": {"executed_lines": [70, 99, 100, 101, 102, 103, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/encode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 70, 72, 73, 85, 99, 100, 101, 102, 103, 105, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [82, 83], "excluded_lines": [29, 31], "functions": {"VigenereEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "VigenereEncode._split_data_encode": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VigenereEncode.encode": {"executed_lines": [118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"VigenereEncode": {"executed_lines": [70, 99, 100, 101, 102, 103, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/key_generator.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 53, 54, 56, 57, 67, 68, 77, 78, 80, 81, 89, 91, 92, 101, 102, 104, 111, 112, 113, 114, 117, 118, 119], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [65, 115], "excluded_lines": [], "functions": {"KeyGenerator.data_len": {"executed_lines": [77, 78], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "KeyGenerator.key": {"executed_lines": [101, 102], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "KeyGenerator.generate_key": {"executed_lines": [111, 112, 113, 114, 117, 118, 119], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [115], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 53, 54, 56, 57, 67, 68, 80, 81, 91, 92, 104], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"KeyGenerator": {"executed_lines": [77, 78, 89, 101, 102, 111, 112, 113, 114, 117, 118, 119], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [65, 115], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 53, 54, 56, 57, 67, 68, 80, 81, 91, 92, 104], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/lookup_table.py": {"executed_lines": [3, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LookUpTable": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 532, "num_statements": 558, "percent_covered": 95.3405017921147, "percent_covered_display": "95", "missing_lines": 26, "excluded_lines": 20}}
\ No newline at end of file
+{"meta": {"format": 3, "version": "7.6.10", "timestamp": "2025-11-03T18:18:05.336430", "branch_coverage": false, "show_contexts": false}, "files": {"/data/dev/python/codecipher/github/codecipher/codecipher/__init__.py": {"executed_lines": [3], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/a1z52n62/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"A1z52N62.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"A1z52N62": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/a1z52n62/decode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 86, 87, 88, 89, 90, 91, 92, 94, 96, 98, 99], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"A1z52N62Decode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "A1z52N62Decode.decode": {"executed_lines": [86, 87, 88, 89, 90, 91, 92, 94, 96, 98, 99], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"A1z52N62Decode": {"executed_lines": [62, 86, 87, 88, 89, 90, 91, 92, 94, 96, 98, 99], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/a1z52n62/encode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"A1z52N62Encode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "A1z52N62Encode.encode": {"executed_lines": [86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"A1z52N62Encode": {"executed_lines": [62, 86, 87, 88, 89, 90, 91, 93, 95, 96, 98, 99], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"AlephTawBetShin.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"AlephTawBetShin": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/decode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 69, 71, 72, 84, 93, 94, 95, 96, 97], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [81, 82], "excluded_lines": [29, 31], "functions": {"AlephTawBetShinDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "AlephTawBetShinDecode.decode": {"executed_lines": [93, 94, 95, 96, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"AlephTawBetShinDecode": {"executed_lines": [69, 93, 94, 95, 96, 97], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/encode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 69, 71, 72, 84, 93, 94, 95, 96, 97], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [81, 82], "excluded_lines": [29, 31], "functions": {"AlephTawBetShinEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "AlephTawBetShinEncode.encode": {"executed_lines": [93, 94, 95, 96, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"AlephTawBetShinEncode": {"executed_lines": [69, 93, 94, 95, 96, 97], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [81, 82], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 58, 60, 61, 71, 72, 84], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/atbs/lookup_table.py": {"executed_lines": [3, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [3, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/b64/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"B64.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"B64": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/b64/decode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 63, 65, 66, 78, 87, 88], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": [], "functions": {"B64Decode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "B64Decode.decode": {"executed_lines": [87, 88], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"B64Decode": {"executed_lines": [63, 87, 88], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/b64/encode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 63, 65, 66, 78, 87, 88], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": [], "functions": {"B64Encode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "B64Encode.encode": {"executed_lines": [87, 88], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"B64Encode": {"executed_lines": [63, 87, 88], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [75, 76], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 52, 54, 55, 65, 66, 78], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/caesar/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"Caesar.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"Caesar": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/caesar/decode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 39, "num_statements": 41, "percent_covered": 95.1219512195122, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"CaesarDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "CaesarDecode.decode": {"executed_lines": [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CaesarDecode": {"executed_lines": [62, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/caesar/encode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 39, "num_statements": 41, "percent_covered": 95.1219512195122, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"CaesarEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "CaesarEncode.encode": {"executed_lines": [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CaesarEncode": {"executed_lines": [62, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vernam/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56, 62], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31], "functions": {"Vernam.__init__": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"Vernam": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 56], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vernam/decode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 34, "num_statements": 36, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"VernamDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "VernamDecode.decode": {"executed_lines": [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VernamDecode": {"executed_lines": [62, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vernam/encode.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 62, 64, 65, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 34, "num_statements": 36, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": [], "functions": {"VernamEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "VernamEncode.encode": {"executed_lines": [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VernamEncode": {"executed_lines": [62, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 104], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [74, 75], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 51, 53, 54, 64, 65, 77], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/__init__.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 57, 63], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [30, 32], "functions": {"Vigenere.__init__": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 57], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [30, 32]}}, "classes": {"Vigenere": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 57], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [30, 32]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/decode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 70, 72, 73, 85, 99, 100, 101, 102, 103, 105, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [82, 83], "excluded_lines": [29, 31], "functions": {"VigenereDecode.decode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "VigenereDecode._split_data_decode": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VigenereDecode.decode": {"executed_lines": [118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"VigenereDecode": {"executed_lines": [70, 99, 100, 101, 102, 103, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/encode.py": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 70, 72, 73, 85, 99, 100, 101, 102, 103, 105, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 2}, "missing_lines": [82, 83], "excluded_lines": [29, 31], "functions": {"VigenereEncode.encode_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "VigenereEncode._split_data_encode": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "VigenereEncode.encode": {"executed_lines": [118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}, "classes": {"VigenereEncode": {"executed_lines": [70, 99, 100, 101, 102, 103, 118, 119, 120, 121, 122, 126, 129], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 83], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 25, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 59, 61, 62, 72, 73, 85, 105], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 31]}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/key_generator.py": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 53, 54, 56, 57, 67, 68, 77, 78, 80, 81, 89, 91, 92, 101, 102, 104, 111, 112, 113, 114, 117, 118, 119], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [65, 115], "excluded_lines": [], "functions": {"KeyGenerator.data_len": {"executed_lines": [77, 78], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "KeyGenerator.key": {"executed_lines": [101, 102], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "KeyGenerator.generate_key": {"executed_lines": [111, 112, 113, 114, 117, 118, 119], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [115], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 53, 54, 56, 57, 67, 68, 80, 81, 91, 92, 104], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"KeyGenerator": {"executed_lines": [77, 78, 89, 101, 102, 111, 112, 113, 114, 117, 118, 119], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [65, 115], "excluded_lines": []}, "": {"executed_lines": [3, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 53, 54, 56, 57, 67, 68, 80, 81, 91, 92, 104], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "/data/dev/python/codecipher/github/codecipher/codecipher/vigenere/lookup_table.py": {"executed_lines": [3, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LookUpTable": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [3, 23, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 532, "num_statements": 558, "percent_covered": 95.3405017921147, "percent_covered_display": "95", "missing_lines": 26, "excluded_lines": 20}}
\ No newline at end of file
diff --git a/tests/codecipher_coverage.xml b/tests/codecipher_coverage.xml
index 8f337c8..3778815 100644
--- a/tests/codecipher_coverage.xml
+++ b/tests/codecipher_coverage.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/tests/htmlcov/class_index.html b/tests/htmlcov/class_index.html
index 0ddaed4..0fd9c75 100644
--- a/tests/htmlcov/class_index.html
+++ b/tests/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -428,7 +428,7 @@
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -660,7 +660,7 @@
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -243,7 +243,7 @@
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_094bd7de807a5f14_decode_py.html b/tests/htmlcov/z_094bd7de807a5f14_decode_py.html
index 7218067..f6a7049 100644
--- a/tests/htmlcov/z_094bd7de807a5f14_decode_py.html
+++ b/tests/htmlcov/z_094bd7de807a5f14_decode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -199,7 +199,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_094bd7de807a5f14_encode_py.html b/tests/htmlcov/z_094bd7de807a5f14_encode_py.html
index 4619c1c..8d77450 100644
--- a/tests/htmlcov/z_094bd7de807a5f14_encode_py.html
+++ b/tests/htmlcov/z_094bd7de807a5f14_encode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -199,7 +199,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_75799433d8182c47___init___py.html b/tests/htmlcov/z_75799433d8182c47___init___py.html
index f0c1251..819ff3c 100644
--- a/tests/htmlcov/z_75799433d8182c47___init___py.html
+++ b/tests/htmlcov/z_75799433d8182c47___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -117,7 +117,7 @@
35__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
36__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
37__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 38__version__: str = '1.4.8'
+ 38__version__: str = '1.4.9'
39__maintainer__: str = 'Vladimir Roncevic'
40__email__: str = 'elektron.ronca@gmail.com'
41__status__: str = 'Updated'
@@ -152,7 +152,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_75799433d8182c47_decode_py.html b/tests/htmlcov/z_75799433d8182c47_decode_py.html
index 79a39bd..afff84c 100644
--- a/tests/htmlcov/z_75799433d8182c47_decode_py.html
+++ b/tests/htmlcov/z_75799433d8182c47_decode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -218,7 +218,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_75799433d8182c47_encode_py.html b/tests/htmlcov/z_75799433d8182c47_encode_py.html
index a2cae74..85bd2f7 100644
--- a/tests/htmlcov/z_75799433d8182c47_encode_py.html
+++ b/tests/htmlcov/z_75799433d8182c47_encode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -218,7 +218,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_75799433d8182c47_key_generator_py.html b/tests/htmlcov/z_75799433d8182c47_key_generator_py.html
index ba0771d..cf6e57a 100644
--- a/tests/htmlcov/z_75799433d8182c47_key_generator_py.html
+++ b/tests/htmlcov/z_75799433d8182c47_key_generator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -208,7 +208,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_75799433d8182c47_lookup_table_py.html b/tests/htmlcov/z_75799433d8182c47_lookup_table_py.html
index 75d4f03..df9690f 100644
--- a/tests/htmlcov/z_75799433d8182c47_lookup_table_py.html
+++ b/tests/htmlcov/z_75799433d8182c47_lookup_table_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -108,7 +108,7 @@
26__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
27__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
28__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 29__version__: str = '1.4.8'
+ 29__version__: str = '1.4.9'
30__maintainer__: str = 'Vladimir Roncevic'
31__email__: str = 'elektron.ronca@gmail.com'
32__status__: str = 'Updated'
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_7dc3960ecaf412e4___init___py.html b/tests/htmlcov/z_7dc3960ecaf412e4___init___py.html
index 917e7f6..4c59764 100644
--- a/tests/htmlcov/z_7dc3960ecaf412e4___init___py.html
+++ b/tests/htmlcov/z_7dc3960ecaf412e4___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_8f54ab6b5b508ca0___init___py.html b/tests/htmlcov/z_8f54ab6b5b508ca0___init___py.html
index 4f24da8..d76aca2 100644
--- a/tests/htmlcov/z_8f54ab6b5b508ca0___init___py.html
+++ b/tests/htmlcov/z_8f54ab6b5b508ca0___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -151,7 +151,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_8f54ab6b5b508ca0_decode_py.html b/tests/htmlcov/z_8f54ab6b5b508ca0_decode_py.html
index 24f7046..48f8f69 100644
--- a/tests/htmlcov/z_8f54ab6b5b508ca0_decode_py.html
+++ b/tests/htmlcov/z_8f54ab6b5b508ca0_decode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -110,7 +110,7 @@
28__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
29__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
30__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 31__version__: str = '1.4.8'
+ 31__version__: str = '1.4.9'
32__maintainer__: str = 'Vladimir Roncevic'
33__email__: str = 'elektron.ronca@gmail.com'
34__status__: str = 'Updated'
@@ -177,7 +177,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_8f54ab6b5b508ca0_encode_py.html b/tests/htmlcov/z_8f54ab6b5b508ca0_encode_py.html
index bef1331..8636a52 100644
--- a/tests/htmlcov/z_8f54ab6b5b508ca0_encode_py.html
+++ b/tests/htmlcov/z_8f54ab6b5b508ca0_encode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -110,7 +110,7 @@
28__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
29__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
30__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 31__version__: str = '1.4.8'
+ 31__version__: str = '1.4.9'
32__maintainer__: str = 'Vladimir Roncevic'
33__email__: str = 'elektron.ronca@gmail.com'
34__status__: str = 'Updated'
@@ -177,7 +177,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_96938f9400a5cdf6___init___py.html b/tests/htmlcov/z_96938f9400a5cdf6___init___py.html
index b7d9db0..46698d4 100644
--- a/tests/htmlcov/z_96938f9400a5cdf6___init___py.html
+++ b/tests/htmlcov/z_96938f9400a5cdf6___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -151,7 +151,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_96938f9400a5cdf6_decode_py.html b/tests/htmlcov/z_96938f9400a5cdf6_decode_py.html
index c22a718..6a76306 100644
--- a/tests/htmlcov/z_96938f9400a5cdf6_decode_py.html
+++ b/tests/htmlcov/z_96938f9400a5cdf6_decode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -188,7 +188,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_96938f9400a5cdf6_encode_py.html b/tests/htmlcov/z_96938f9400a5cdf6_encode_py.html
index 1a5791e..56aa396 100644
--- a/tests/htmlcov/z_96938f9400a5cdf6_encode_py.html
+++ b/tests/htmlcov/z_96938f9400a5cdf6_encode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -188,7 +188,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_9927f90504198b80___init___py.html b/tests/htmlcov/z_9927f90504198b80___init___py.html
index db404a7..b5b303c 100644
--- a/tests/htmlcov/z_9927f90504198b80___init___py.html
+++ b/tests/htmlcov/z_9927f90504198b80___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -151,7 +151,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_9927f90504198b80_decode_py.html b/tests/htmlcov/z_9927f90504198b80_decode_py.html
index 90c1414..e09298e 100644
--- a/tests/htmlcov/z_9927f90504198b80_decode_py.html
+++ b/tests/htmlcov/z_9927f90504198b80_decode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -186,7 +186,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_9927f90504198b80_encode_py.html b/tests/htmlcov/z_9927f90504198b80_encode_py.html
index eca89be..f5fec96 100644
--- a/tests/htmlcov/z_9927f90504198b80_encode_py.html
+++ b/tests/htmlcov/z_9927f90504198b80_encode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -186,7 +186,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_9927f90504198b80_lookup_table_py.html b/tests/htmlcov/z_9927f90504198b80_lookup_table_py.html
index 18feee4..2bcab24 100644
--- a/tests/htmlcov/z_9927f90504198b80_lookup_table_py.html
+++ b/tests/htmlcov/z_9927f90504198b80_lookup_table_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -107,7 +107,7 @@
25__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
26__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
27__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 28__version__: str = '1.4.8'
+ 28__version__: str = '1.4.9'
29__maintainer__: str = 'Vladimir Roncevic'
30__email__: str = 'elektron.ronca@gmail.com'
31__status__: str = 'Updated'
@@ -136,7 +136,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_aba196749d301797___init___py.html b/tests/htmlcov/z_aba196749d301797___init___py.html
index faeae56..9254129 100644
--- a/tests/htmlcov/z_aba196749d301797___init___py.html
+++ b/tests/htmlcov/z_aba196749d301797___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -116,7 +116,7 @@
34__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
35__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
36__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 37__version__: str = '1.4.8'
+ 37__version__: str = '1.4.9'
38__maintainer__: str = 'Vladimir Roncevic'
39__email__: str = 'elektron.ronca@gmail.com'
40__status__: str = 'Updated'
@@ -151,7 +151,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_aba196749d301797_decode_py.html b/tests/htmlcov/z_aba196749d301797_decode_py.html
index e2d844a..2ef4d7c 100644
--- a/tests/htmlcov/z_aba196749d301797_decode_py.html
+++ b/tests/htmlcov/z_aba196749d301797_decode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -193,7 +193,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/htmlcov/z_aba196749d301797_encode_py.html b/tests/htmlcov/z_aba196749d301797_encode_py.html
index f0cb4aa..2f8af9a 100644
--- a/tests/htmlcov/z_aba196749d301797_encode_py.html
+++ b/tests/htmlcov/z_aba196749d301797_encode_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
@@ -109,7 +109,7 @@
27__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
28__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
29__license__: str = 'https://github.com/electux/codecipher/blob/main/LICENSE'
- 30__version__: str = '1.4.8'
+ 30__version__: str = '1.4.9'
31__maintainer__: str = 'Vladimir Roncevic'
32__email__: str = 'elektron.ronca@gmail.com'
33__status__: str = 'Updated'
@@ -193,7 +193,7 @@
» next
coverage.py v7.6.10,
- created at 2025-11-01 07:55 +0100
+ created at 2025-11-03 18:18 +0100
diff --git a/tests/vernam_test.py b/tests/vernam_test.py
index 17d4fab..ff943c3 100644
--- a/tests/vernam_test.py
+++ b/tests/vernam_test.py
@@ -36,7 +36,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/dev/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'
diff --git a/tests/vigenere_test.py b/tests/vigenere_test.py
index 5d0e125..16fcbc4 100644
--- a/tests/vigenere_test.py
+++ b/tests/vigenere_test.py
@@ -36,7 +36,7 @@
__copyright__: str = '(C) 2025, https://electux.github.io/codecipher'
__credits__: List[str] = ['Vladimir Roncevic', 'Python Software Foundation']
__license__: str = 'https://github.com/electux/codecipher/blob/dev/LICENSE'
-__version__: str = '1.4.8'
+__version__: str = '1.4.9'
__maintainer__: str = 'Vladimir Roncevic'
__email__: str = 'elektron.ronca@gmail.com'
__status__: str = 'Updated'