Ошибка! missing 7 required positional arguments:
При запуске кода шифровальщика, выходит ошибка! Кажется что проблема в получении переменных из env... Ошибка:
TypeError: DotenvDefaultData.__init__() missing 7 required positional arguments: 'bot_token', 'host', 'port', 'user', 'password', 'database', and 'security_key'
Код шифрования:
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from base64 import urlsafe_b64encode
import os
import asyncio
from source.utils.dotenv_utils import get_dotenv_data
async def hashing(password: str):
password = password.encode('utf-8')
env_data = get_dotenv_data()
security_key = env_data.security_key
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=security_key,
iterations=480000,
backend=default_backend()
)
key = urlsafe_b64encode(kdf.derive(security_key))
cipher_suite = Fernet(key)
encrypted_message = cipher_suite.encrypt(password)
print("Зашифрованное сообщение:", encrypted_message)
decrypted_message = cipher_suite.decrypt(encrypted_message)
print("Расшифрованное сообщение:", decrypted_message.decode('utf-8'))
if __name__ == "__main__":
asyncio.run(hashing("п"))
Код dotenv_utils:
from dotenv import dotenv_values
from source.models.models import DotenvDefaultData
def get_dotenv_data() -> DotenvDefaultData:
env_values = dotenv_values(".env")
values = [value for key, value in env_values.items()]
return DotenvDefaultData(*values)
Код models:
class DotenvDefaultData:
def __init__(self,
bot_token: str,
host: str,
port: int,
user: str,
password: str,
database: str,
security_key: str,
):
self.bot_token = bot_token
self.host = host
self.port = port
self.user = user
self.password = password
self.database = database
self.security_key = security_key
Файл env ("Пример структуры"):
BOT_TOKEN=12345
HOST=12345
PORT=12345
USER=qwerty
PASSWORD=qwerty
DATABASE=qwertybase
SECURITY_KEY=b"QWERTY"