hoverpower 1.2.0__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. {hoverpower-1.2.0 → hoverpower-1.4.0}/PKG-INFO +21 -1
  2. {hoverpower-1.2.0 → hoverpower-1.4.0}/README +20 -0
  3. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/secret.py +7 -3
  4. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower.egg-info/PKG-INFO +21 -1
  5. {hoverpower-1.2.0 → hoverpower-1.4.0}/pyproject.toml +1 -1
  6. hoverpower-1.4.0/tests/test_secret.py +45 -0
  7. hoverpower-1.2.0/tests/test_secret.py +0 -15
  8. {hoverpower-1.2.0 → hoverpower-1.4.0}/LICENSE +0 -0
  9. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/__init__.py +0 -0
  10. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/__main__.py +0 -0
  11. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/cli/__init__.py +0 -0
  12. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/cli/give.py +0 -0
  13. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/data.py +0 -0
  14. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/generator.py +0 -0
  15. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/hard.py +0 -0
  16. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/info.py +0 -0
  17. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/path.py +0 -0
  18. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/repo/__init__.py +0 -0
  19. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower/title.py +0 -0
  20. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower.egg-info/SOURCES.txt +0 -0
  21. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower.egg-info/dependency_links.txt +0 -0
  22. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower.egg-info/entry_points.txt +0 -0
  23. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower.egg-info/requires.txt +0 -0
  24. {hoverpower-1.2.0 → hoverpower-1.4.0}/hoverpower.egg-info/top_level.txt +0 -0
  25. {hoverpower-1.2.0 → hoverpower-1.4.0}/setup.cfg +0 -0
  26. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_cli.py +0 -0
  27. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_generator.py +0 -0
  28. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_give.py +0 -0
  29. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_hardcore.py +0 -0
  30. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_path.py +0 -0
  31. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_repository.py +0 -0
  32. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_resources.py +0 -0
  33. {hoverpower-1.2.0 → hoverpower-1.4.0}/tests/test_title.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hoverpower
3
- Version: 1.2.0
3
+ Version: 1.4.0
4
4
  Author-email: Helmut Konrad Schewe <helmutus@outlook.com>
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/anaticulae/hoverpower
@@ -38,3 +38,23 @@ generate test data:
38
38
  --negative
39
39
  --paper
40
40
  --small
41
+
42
+ ## developer setup
43
+
44
+ ```
45
+ cd ~/hoverpower
46
+ python3 -mvenv ~/.tmp/$(basename $PWD)
47
+ source ~/.tmp/$(basename $PWD)/bin/activate
48
+
49
+ pip install baw
50
+ baw sync all
51
+
52
+ pip install .[dev]
53
+
54
+ export HOVERPOWER_STORE=~/hoverpower/hoverpower/repo
55
+ # export HOVERPOWER_SECRET=
56
+
57
+ powerdecrypt
58
+
59
+ baw test all
60
+ ```
@@ -16,3 +16,23 @@ generate test data:
16
16
  --negative
17
17
  --paper
18
18
  --small
19
+
20
+ ## developer setup
21
+
22
+ ```
23
+ cd ~/hoverpower
24
+ python3 -mvenv ~/.tmp/$(basename $PWD)
25
+ source ~/.tmp/$(basename $PWD)/bin/activate
26
+
27
+ pip install baw
28
+ baw sync all
29
+
30
+ pip install .[dev]
31
+
32
+ export HOVERPOWER_STORE=~/hoverpower/hoverpower/repo
33
+ # export HOVERPOWER_SECRET=
34
+
35
+ powerdecrypt
36
+
37
+ baw test all
38
+ ```
@@ -19,7 +19,11 @@ DEFAULT_SECRET = b'ohrfFMW4YeHu96rkblrD-i4PEIsV_5jFCfZWfgkUgLk='
19
19
 
20
20
  HOVERPOWER_SECRET = os.environ.get('HOVERPOWER_SECRET', DEFAULT_SECRET)
21
21
 
22
- CIPHER = cryptography.fernet.Fernet(key=HOVERPOWER_SECRET)
22
+ try:
23
+ CIPHER = cryptography.fernet.Fernet(key=HOVERPOWER_SECRET)
24
+ except ValueError:
25
+ utilo.exitx(f'Invalid HOVERPOWER_SECRET format: {HOVERPOWER_SECRET}\n'
26
+ f'Example : {DEFAULT_SECRET}')
23
27
 
24
28
 
25
29
  def decrypt(path: str) -> bytes | None:
@@ -28,7 +32,7 @@ def decrypt(path: str) -> bytes | None:
28
32
  try:
29
33
  data = CIPHER.decrypt(encrypted)
30
34
  except cryptography.fernet.InvalidToken:
31
- utilo.error(f'invalid HOVERPOWER_SECRET for {path}')
35
+ utilo.error(f'invalid HOVERPOWER_SECRET for: {path}')
32
36
  return None
33
37
  return data
34
38
 
@@ -73,7 +77,7 @@ def make_public():
73
77
  utilo.log(source)
74
78
  public = decrypt(source)
75
79
  if not public:
76
- continue
80
+ utilo.exitx()
77
81
  base, fname = ensure_parant(source)
78
82
  outpath = utilo.join(base, fname.replace('.pdfs', '.pdf'))
79
83
  utilo.log(f'=> {outpath}')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hoverpower
3
- Version: 1.2.0
3
+ Version: 1.4.0
4
4
  Author-email: Helmut Konrad Schewe <helmutus@outlook.com>
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/anaticulae/hoverpower
@@ -38,3 +38,23 @@ generate test data:
38
38
  --negative
39
39
  --paper
40
40
  --small
41
+
42
+ ## developer setup
43
+
44
+ ```
45
+ cd ~/hoverpower
46
+ python3 -mvenv ~/.tmp/$(basename $PWD)
47
+ source ~/.tmp/$(basename $PWD)/bin/activate
48
+
49
+ pip install baw
50
+ baw sync all
51
+
52
+ pip install .[dev]
53
+
54
+ export HOVERPOWER_STORE=~/hoverpower/hoverpower/repo
55
+ # export HOVERPOWER_SECRET=
56
+
57
+ powerdecrypt
58
+
59
+ baw test all
60
+ ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "hoverpower"
3
- version = "1.2.0"
3
+ version = "1.4.0"
4
4
  description = ""
5
5
  requires-python = ">=3.12"
6
6
  authors = [
@@ -0,0 +1,45 @@
1
+ import unittest.mock
2
+
3
+ import utilo
4
+
5
+ import hoverpower.secret
6
+
7
+ SOURCE = 'secret.txt'
8
+ DEST = 'encrypted.bin'
9
+ DATA = b'line1'
10
+
11
+
12
+ def test_encode_decode(testdir):
13
+ utilo.file_create_binary(SOURCE, DATA)
14
+ encrypted = hoverpower.secret.encrypt(SOURCE)
15
+ utilo.file_create_binary(DEST, encrypted)
16
+ decrypted = hoverpower.secret.decrypt(DEST)
17
+ assert decrypted == DATA
18
+
19
+
20
+ @unittest.mock.patch.dict(
21
+ 'os.environ',
22
+ {'HOVERPOWER_SECRET': 'newvalue'}, # nosec
23
+ )
24
+ def test_decode_invalid_format():
25
+ """Fail if secret is not 32 bytes long."""
26
+ completed = utilo.run(
27
+ 'powerdecrypt',
28
+ expect=False,
29
+ )
30
+ assert '[ERROR] Invalid HOVERPOWER_SECRET format: newvalue' in completed.stderr
31
+
32
+
33
+ @unittest.mock.patch.dict(
34
+ 'os.environ',
35
+ {'HOVERPOWER_SECRET': hoverpower.secret.DEFAULT_SECRET.decode()}, # nosec
36
+ )
37
+ def test_decode_invalid_secret():
38
+ """Stop extracting resources after first invalid secret."""
39
+ completed = utilo.run(
40
+ 'powerdecrypt',
41
+ expect=False,
42
+ )
43
+ error = completed.stderr
44
+ count = error.count('[ERROR] invalid HOVERPOWER_SECRET for')
45
+ assert count == 1
@@ -1,15 +0,0 @@
1
- import utilo
2
-
3
- import hoverpower.secret
4
-
5
- SOURCE = 'secret.txt'
6
- DEST = 'encrypted.bin'
7
- DATA = b'line1'
8
-
9
-
10
- def test_encode_decode(testdir):
11
- utilo.file_create_binary(SOURCE, DATA)
12
- encrypted = hoverpower.secret.encrypt(SOURCE)
13
- utilo.file_create_binary(DEST, encrypted)
14
- decrypted = hoverpower.secret.decrypt(DEST)
15
- assert decrypted == DATA
File without changes
File without changes
File without changes