From 4a3ceed267df1b20923d7d355f29074f49bc7315 Mon Sep 17 00:00:00 2001 From: Cherif Korchane Date: Fri, 20 Sep 2024 10:42:01 +0200 Subject: [PATCH 1/2] chore: classifier doc/cleanup --- .../display_format_checker.py | 6 ++++++ src/erc7730/linter/classifier/__init__.py | 5 +++++ src/erc7730/linter/classifier/abi_classifier.py | 5 +++++ src/erc7730/linter/classifier/eip712_classifier.py | 5 +++++ 4 files changed, 21 insertions(+) rename src/erc7730/{linter/common => display_format_checker}/display_format_checker.py (92%) diff --git a/src/erc7730/linter/common/display_format_checker.py b/src/erc7730/display_format_checker/display_format_checker.py similarity index 92% rename from src/erc7730/linter/common/display_format_checker.py rename to src/erc7730/display_format_checker/display_format_checker.py index dedd950..04b6b71 100644 --- a/src/erc7730/linter/common/display_format_checker.py +++ b/src/erc7730/display_format_checker/display_format_checker.py @@ -14,6 +14,12 @@ def _fields_contain(word: str, fields: set[str]) -> bool: class DisplayFormatChecker: + """ + Given a transaction class and a display formats, check if all the required fields of a given + transaction class are being displayed. + If a field is missing emit an error. + """ + def __init__(self, c: TxClass, d: Display): self.c = c self.d = d diff --git a/src/erc7730/linter/classifier/__init__.py b/src/erc7730/linter/classifier/__init__.py index b129447..1be98f3 100644 --- a/src/erc7730/linter/classifier/__init__.py +++ b/src/erc7730/linter/classifier/__init__.py @@ -16,6 +16,11 @@ class TxClass(StrEnum): class Classifier(ABC, Generic[Schema]): + """ + Given a schema (which is an EIP712 schema or an ABI schema), classify the transaction type + with some predefined ruleset. + """ + @abstractmethod def classify(self, schema: Schema) -> TxClass | None: raise NotImplementedError() diff --git a/src/erc7730/linter/classifier/abi_classifier.py b/src/erc7730/linter/classifier/abi_classifier.py index 5f7b366..d7222f1 100644 --- a/src/erc7730/linter/classifier/abi_classifier.py +++ b/src/erc7730/linter/classifier/abi_classifier.py @@ -6,6 +6,11 @@ class ABIClassifier(Classifier[AbiJsonSchema]): + """ + Given an EIP712 schema, classify the transaction type with some predefined ruleset. + (not implemented) + """ + @override def classify(self, schema: AbiJsonSchema) -> TxClass | None: pass diff --git a/src/erc7730/linter/classifier/eip712_classifier.py b/src/erc7730/linter/classifier/eip712_classifier.py index 31cc59b..69c6dea 100644 --- a/src/erc7730/linter/classifier/eip712_classifier.py +++ b/src/erc7730/linter/classifier/eip712_classifier.py @@ -6,6 +6,11 @@ class EIP712Classifier(Classifier[EIP712JsonSchema]): + """ + Given an EIP712 schema, classify the transaction type with some predefined ruleset. + (implemented a basic detection of a permit) + """ + @override def classify(self, schema: EIP712JsonSchema) -> TxClass | None: if "permit" in schema.primaryType.lower(): From 1b8dc1c2c4e766367991ad5ac279a11bdd1eeb42 Mon Sep 17 00:00:00 2001 From: Cherif Korchane Date: Fri, 20 Sep 2024 10:47:27 +0200 Subject: [PATCH 2/2] fix include --- .../{display_format_checker.py => __init__.py} | 0 src/erc7730/linter/linter_transaction_type_classifier_ai.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/erc7730/display_format_checker/{display_format_checker.py => __init__.py} (100%) diff --git a/src/erc7730/display_format_checker/display_format_checker.py b/src/erc7730/display_format_checker/__init__.py similarity index 100% rename from src/erc7730/display_format_checker/display_format_checker.py rename to src/erc7730/display_format_checker/__init__.py diff --git a/src/erc7730/linter/linter_transaction_type_classifier_ai.py b/src/erc7730/linter/linter_transaction_type_classifier_ai.py index cd0cada..46e582d 100644 --- a/src/erc7730/linter/linter_transaction_type_classifier_ai.py +++ b/src/erc7730/linter/linter_transaction_type_classifier_ai.py @@ -1,6 +1,6 @@ from erc7730.linter.classifier.abi_classifier import ABIClassifier from erc7730.linter.classifier.eip712_classifier import EIP712Classifier -from erc7730.linter.common.display_format_checker import DisplayFormatChecker +from erc7730.display_format_checker import DisplayFormatChecker from erc7730.linter import ERC7730Linter from erc7730.model.context import EIP712Context, ContractContext, EIP712JsonSchema from erc7730.model.display import Display