__init__.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from typing import Set, ClassVar
  2. from dataclasses import dataclass, field
  3. @dataclass(frozen=True)
  4. class ApiEntryFunction:
  5. name: str
  6. returns: str
  7. params: str
  8. csv_type: ClassVar[str] = "Function"
  9. def dictify(self):
  10. return dict(name=self.name, type=self.returns, params=self.params)
  11. @dataclass(frozen=True)
  12. class ApiEntryVariable:
  13. name: str
  14. var_type: str
  15. csv_type: ClassVar[str] = "Variable"
  16. def dictify(self):
  17. return dict(name=self.name, type=self.var_type, params=None)
  18. @dataclass(frozen=True)
  19. class ApiHeader:
  20. name: str
  21. csv_type: ClassVar[str] = "Header"
  22. def dictify(self):
  23. return dict(name=self.name, type=None, params=None)
  24. @dataclass
  25. class ApiEntries:
  26. # These are sets, to avoid creating duplicates when we have multiple
  27. # declarations with same signature
  28. functions: Set[ApiEntryFunction] = field(default_factory=set)
  29. variables: Set[ApiEntryVariable] = field(default_factory=set)
  30. headers: Set[ApiHeader] = field(default_factory=set)