Skip to content

Commit 8badbfd

Browse files
committed
fixed linter error
1 parent f7443ea commit 8badbfd

3 files changed

Lines changed: 21 additions & 25 deletions

File tree

src/dotenv/crypt.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import base64
22
import re
3+
from typing import Optional
34

45
from cryptography.fernet import Fernet
56

@@ -9,24 +10,30 @@
910
class Crypt:
1011

1112
@classmethod
12-
def is_encrypted_value(cls, value) -> bool:
13-
return not not re.match(ENCRYPTION_REGEX, value)
13+
def is_encrypted_value(cls, value: Optional[str]) -> bool:
14+
return value is not None and not not re.match(ENCRYPTION_REGEX, value)
1415

1516
@classmethod
16-
def _extract_encrypted_value(cls, value) -> str:
17-
return re.match(ENCRYPTION_REGEX, value).group(1)
17+
def _extract_encrypted_value(cls, value) -> Optional[str]:
18+
match = re.match(ENCRYPTION_REGEX, value)
19+
if match:
20+
return match.group(1)
21+
return None
1822

1923
@classmethod
2024
def generate_key(cls) -> str:
2125
key_bytes = Fernet.generate_key()
2226
return base64.encodebytes(key_bytes).decode('utf-8')
2327

2428
@classmethod
25-
def decrypt_value(cls, value: str, key: str) -> str:
26-
if not key:
29+
def decrypt_value(cls, value: str, key: Optional[str]) -> str:
30+
if not key or not value:
2731
return value
2832
key_bytes = base64.decodebytes(key.encode('utf-8'))
29-
value_bytes = base64.decodebytes(cls._extract_encrypted_value(value).encode('utf-8'))
33+
encrypted_value = cls._extract_encrypted_value(value)
34+
if not encrypted_value:
35+
return value
36+
value_bytes = base64.decodebytes(encrypted_value.encode('utf-8'))
3037
decrypted_bytes = Fernet(key=key_bytes).decrypt(value_bytes)
3138
return decrypted_bytes.decode('utf-8')
3239

@@ -35,13 +42,3 @@ def encrypt_value(cls, value: str, key: str) -> str:
3542
key_bytes = base64.decodebytes(key.encode('utf-8'))
3643
encrypted_bytes = Fernet(key=key_bytes).encrypt(value.encode('utf-8'))
3744
return 'enc{' + base64.encodebytes(encrypted_bytes).decode('utf-8').strip().replace('\n', '') + '}'
38-
39-
40-
if __name__ == '__main__':
41-
key = Crypt.generate_key()
42-
message = 'Hello World'
43-
encrypt_value = Crypt.encrypt_value(message, key)
44-
print(encrypt_value)
45-
print(Crypt.is_encrypted_value(encrypt_value))
46-
print(Crypt._extract_encrypted_value(encrypt_value))
47-
print(Crypt.decrypt_value(encrypt_value, key))

src/dotenv/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def __init__(
4040
encoding: Optional[str] = None,
4141
interpolate: bool = True,
4242
override: bool = True,
43-
secret_key: str = None
43+
secret_key: Optional[str] = None
4444
) -> None:
4545
self.dotenv_path: Optional[StrPath] = dotenv_path
4646
self.stream: Optional[IO[str]] = stream
@@ -158,7 +158,7 @@ def set_key(
158158
quote_mode: str = "always",
159159
export: bool = False,
160160
encoding: Optional[str] = "utf-8",
161-
secret_key: str = None,
161+
secret_key: Optional[str] = None,
162162
) -> Tuple[Optional[bool], str, str]:
163163
"""
164164
Adds or Updates a key/value to the given .env
@@ -205,7 +205,7 @@ def unset_key(
205205
key_to_unset: str,
206206
quote_mode: str = "always",
207207
encoding: Optional[str] = "utf-8",
208-
secret_key: str = None
208+
secret_key: Optional[str] = None
209209
) -> Tuple[Optional[bool], str]:
210210
"""
211211
Removes a given key from the given `.env` file.

src/dotenv/parser.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def parse_unquoted_value(reader: Reader) -> str:
120120
return re.sub(r"\s+#.*", "", part).rstrip()
121121

122122

123-
def parse_value(reader: Reader, secret_key: str) -> str:
123+
def parse_value(reader: Reader, secret_key: Optional[str]) -> str:
124124
char = reader.peek(1)
125125
if char == u"'":
126126
(value,) = reader.read_regex(_single_quoted_value)
@@ -138,7 +138,7 @@ def parse_value(reader: Reader, secret_key: str) -> str:
138138
return value
139139

140140

141-
def parse_binding(reader: Reader, secret_key: str = None) -> Binding:
141+
def parse_binding(reader: Reader, secret_key: Optional[str] = None) -> Binding:
142142
reader.set_mark()
143143
try:
144144
reader.read_regex(_multiline_whitespace)
@@ -174,13 +174,12 @@ def parse_binding(reader: Reader, secret_key: str = None) -> Binding:
174174
error=True,
175175
)
176176

177-
def parse_secret_value(value: str) -> str:
178177

178+
def parse_secret_value(value: str) -> str:
179179
return value
180180

181181

182-
183-
def parse_stream(stream: IO[str], secret_key: str = None) -> Iterator[Binding]:
182+
def parse_stream(stream: IO[str], secret_key: Optional[str] = None) -> Iterator[Binding]:
184183
reader = Reader(stream)
185184
while reader.has_next():
186185
yield parse_binding(reader, secret_key)

0 commit comments

Comments
 (0)