Kaydet (Commit) 69d6a8d4 authored tarafından Batuhan Osman TASKAYA's avatar Batuhan Osman TASKAYA

flake8 fix

üst bb685b49
...@@ -22,7 +22,7 @@ pipeline { ...@@ -22,7 +22,7 @@ pipeline {
stage('flake8') { stage('flake8') {
steps { steps {
sh """. .venv/bin/activate sh """. .venv/bin/activate
flake8 --max-complexity 7 --output-file --ignore E501 flake8_results.txt darwcss/ flake8 --max-complexity 7 --output-file --ignore E501,F402 flake8_results.txt darwcss/
[ -f flake8_results.txt ] && flake8_junit flake8_results.txt test_flake8.xml;rm flake8_results.txt [ -f flake8_results.txt ] && flake8_junit flake8_results.txt test_flake8.xml;rm flake8_results.txt
""" """
} }
......
...@@ -10,26 +10,31 @@ from operator import attrgetter ...@@ -10,26 +10,31 @@ from operator import attrgetter
from functools import partial from functools import partial
from dataclasses import dataclass, field, fields, MISSING from dataclasses import dataclass, field, fields, MISSING
from collections import UserDict from collections import UserDict
from random import randint
""" """
noqa:F821 = https://github.com/PyCQA/pyflakes/issues/373 noqa:F821 = https://github.com/PyCQA/pyflakes/issues/373
""" """
class ArgumentMapping(UserDict): class ArgumentMapping(UserDict):
@classmethod @classmethod
def fill_rest(cls, keys, values, filler=None, cleaner=None): def fill_rest(cls, keys, values, filler=None, cleaner=None):
cleaner = cleaner or (lambda value: value) cleaner = cleaner or (lambda value: value)
if len(keys) != len(values): if len(keys) != len(values):
requested_keys = keys[len(keys) - len(values):] requested_keys = keys[len(keys) - len(values):]
requested_values = filler(requested_keys) if callable(filler) else repeat(filler, len(requested_keys)) requested_values = (
filler(requested_keys)
if callable(filler)
else repeat(filler, len(requested_keys))
)
requested_items = dict(zip(map(cleaner, requested_keys), requested_values)) requested_items = dict(zip(map(cleaner, requested_keys), requested_values))
else: else:
requested_items = {} requested_items = {}
args = dict(zip(map(cleaner, keys), values)) args = dict(zip(map(cleaner, keys), values))
return dict(**args, **requested_items) return dict(**args, **requested_items)
def value_generator(fields): def value_generator(fields):
values = [] values = []
for field in fields: for field in fields:
...@@ -41,38 +46,49 @@ def value_generator(fields): ...@@ -41,38 +46,49 @@ def value_generator(fields):
else: else:
values.append(field.default_factory()) values.append(field.default_factory())
return values return values
def init(*values, **kwds): def init(*values, **kwds):
self = kwds.pop('self') self = kwds.pop("self")
fields = kwds.pop('fields') fields = kwds.pop("fields")
for key, value in kwds.items(): for key, value in kwds.items():
fields = tuple([field for field in fields if hasattr(field, 'name') and field.name != key]) fields = tuple(
[field for field in fields if hasattr(field, "name") and field.name != key]
args = ArgumentMapping.fill_rest(fields, values, filler=value_generator, cleaner=lambda value: value.name if hasattr(value, "name") else value) )
args = ArgumentMapping.fill_rest(
fields,
values,
filler=value_generator,
cleaner=lambda value: value.name if hasattr(value, "name") else value,
)
args.update(kwds) args.update(kwds)
for field, value in args.items(): for field, value in args.items():
if hasattr(field, 'name'): if hasattr(field, "name"):
field = field.name field = field.name
setattr(self, field, value) setattr(self, field, value)
if hasattr(self, '__after_init__'): if hasattr(self, "__after_init__"):
self.__after_init__(self) self.__after_init__(self)
return None return None
def fake_init(cls, fields): def fake_init(cls, fields):
return cls(**dict(zip(map(attrgetter("name"), fields), value_generator(fields)))) return cls(**dict(zip(map(attrgetter("name"), fields), value_generator(fields))))
def attr_get(self, name): def attr_get(self, name):
print(self, name) print(self, name)
return getattr(self._self, name) return getattr(self._self, name)
def configurable_dataclass(*args, **kwargs): def configurable_dataclass(*args, **kwargs):
cls = dataclass(*args, **kwargs) cls = dataclass(*args, **kwargs)
meta_conf = field(default_factory=dict) meta_conf = field(default_factory=dict)
meta_conf.name = "meta_cfg" meta_conf.name = "meta_cfg"
cls_fields = fields(cls) cls_fields = fields(cls)
cls._self = fake_init(cls, cls_fields) cls._self = fake_init(cls, cls_fields)
cls.__init__ = partial(init, self=cls, fields=cls_fields + (meta_conf,)) cls.__init__ = partial(init, self=cls, fields=cls_fields + (meta_conf,))
...@@ -158,7 +174,7 @@ class Style: ...@@ -158,7 +174,7 @@ class Style:
def __post_init__(self) -> None: def __post_init__(self) -> None:
self.value = render(self.value) self.value = render(self.value)
f = currentframe().f_back.f_back # type: ignore f = currentframe().f_back.f_back # type: ignore
l, g = f.f_locals, f.f_globals l, g = f.f_locals, f.f_globals
if l.get("DARWCSS_AUTO", g.get("DARWCSS_AUTO", False)): if l.get("DARWCSS_AUTO", g.get("DARWCSS_AUTO", False)):
try: try:
...@@ -186,7 +202,8 @@ class Selector: ...@@ -186,7 +202,8 @@ class Selector:
def append(self, style: Style) -> None: def append(self, style: Style) -> None:
self.styles.append(style) self.styles.append(style)
class CSS: class CSS:
def __init__(self, conf: Optional[Dict] = None) -> None: def __init__(self, conf: Optional[Dict] = None) -> None:
self.selectors: Dict[str, Selector] = {} self.selectors: Dict[str, Selector] = {}
...@@ -203,7 +220,7 @@ class CSS: ...@@ -203,7 +220,7 @@ class CSS:
@contextmanager @contextmanager
def selector(self, area: str) -> Generator[Selector, None, None]: def selector(self, area: str) -> Generator[Selector, None, None]:
selector = Selector(area, meta_cfg=self.conf) # type: ignore selector = Selector(area, meta_cfg=self.conf) # type: ignore
try: try:
yield selector yield selector
finally: finally:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment