Closed joseph-sentry closed 2 weeks ago
All modified and coverable lines are covered by tests :white_check_mark:
:white_check_mark: All tests successful. No failed tests found.
:loudspeaker: Thoughts on this report? Let us know!
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 96.31%. Comparing base (
16557ec
) to head (38da329
). Report is 1 commits behind head on main.
:white_check_mark: All tests successful. No failed tests found.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Tests completed | Failed | Passed | Skipped |
---|---|---|---|
2380 | 6 | 2374 | 6 |
graphql_api.tests.test_test_result.TestResultTestCase test_fetch_test_result_updated_at
Stack Traces | 0.323s run time
> > ``` > self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_updated_at> > > def setUp(self): > self.owner = OwnerFactory(username="randomOwner") > self.repository = RepositoryFactory( > author=self.owner, > ) > self.test = TestFactory( > name="Test\x1fName", > repository=self.repository, > ) > > self.test_with_flag = TestFactory( > name="Other Test", > repository=self.repository, > ) > > flag = RepositoryFlagFactory( > repository=self.repository, flag_name="test_flag_name" > ) > > > _ = TestFlagBridgeFactory(repository=self.repository, flag=flag) > > graphql_api/tests/test_test_result.py:39: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > .../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__ > return cls.create(**kwargs) > .../local/lib/python3.12............/site-packages/factory/base.py:528: in create > return cls._generate(enums.CREATE_STRATEGY, kwargs) > .../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate > return super()._generate(strategy, params) > .../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate > return step.build() > .../local/lib/python3.12.../site-packages/factory/builder.py:262: in build > instance = self.factory_meta.instantiate( > .../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate > return self.factory._create(model, *args, **kwargs) > .../local/lib/python3.12....../site-packages/factory/django.py:166: in _create > return manager.create(*args, **kwargs) > .../local/lib/python3.12.../db/models/manager.py:87: in manager_method > return getattr(self.get_queryset(), name)(*args, **kwargs) > .../local/lib/python3.12.../db/models/query.py:656: in create > obj = self.model(**kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = <TestFlagBridge: TestFlagBridge object (None)>, args = () > kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/operation>>} > cls = <class 'shared.django_apps.reports.models.TestFlagBridge'> > opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr> > _DEFERRED = <Deferred field> > fields_iter = <tuple_iterator object at 0x7f248aa86e90>, val = None > field = <django.db.models.fields.related.ForeignKey: test> > is_related_object = True, rel_obj = <Test: Test object (219)> > property_names = frozenset({'pk'}) > > def __init__(self, *args, **kwargs): > # Alias some things as locals to avoid repeat global lookups > cls = self.__class__ > opts = self._meta > _setattr = setattr > _DEFERRED = DEFERRED > if opts.abstract: > raise TypeError("Abstract models cannot be instantiated.") > > pre_init.send(sender=cls, args=args, kwargs=kwargs) > > # Set up the storage for instance state > self._state = ModelState() > > # There is a rather weird disparity here; if kwargs, it's set, then args > # overrides it. It should be one or the other; don't duplicate the work > # The reason for the kwargs check is that standard iterator passes in by > # args, and instantiation for iteration is 33% faster. > if len(args) > len(opts.concrete_fields): > # Daft, but matches old exception sans the err msg. > raise IndexError("Number of args exceeds number of fields") > > if not kwargs: > fields_iter = iter(opts.concrete_fields) > # The ordering of the zip calls matter - zip throws StopIteration > # when an iter throws it. So if the first iter throws it, the second > # is *not* consumed. We rely on this, so don't change the order > # without changing the logic. > for val, field in zip(args, fields_iter): > if val is _DEFERRED: > continue > _setattr(self, field.attname, val) > else: > # Slower, kwargs-ready version. > fields_iter = iter(opts.fields) > for val, field in zip(args, fields_iter): > if val is _DEFERRED: > continue > _setattr(self, field.attname, val) > if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED: > raise TypeError( > f"{cls.__qualname__}() got both positional and " > f"keyword arguments for field '{field.name}'." > ) > > # Now we're left with the unprocessed fields that *must* come from > # keywords, or default. > > for field in fields_iter: > is_related_object = False > # Virtual field > if field.attname not in kwargs and field.column is None: > continue > if kwargs: > if isinstance(field.remote_field, ForeignObjectRel): > try: > # Assume object instance was passed in. > rel_obj = kwargs.pop(field.name) > is_related_object = True > except KeyError: > try: > # Object instance wasn't passed in -- must be an ID. > val = kwargs.pop(field.attname) > except KeyError: > val = field.get_default() > else: > try: > val = kwargs.pop(field.attname) > except KeyError: > # This is done with an exception rather than the > # default argument on pop because we don't want > # get_default() to be evaluated, and then not used. > # Refs #12057. > val = field.get_default() > else: > val = field.get_default() > > if is_related_object: > # If we are passed a related instance, set it using the > # field.name instead of field.attname (e.g. "user" instead of > # "user_id") so that the object gets properly cached (and type > # checked) by the RelatedObjectDescriptor. > if rel_obj is not _DEFERRED: > _setattr(self, field.name, rel_obj) > else: > if val is not _DEFERRED: > _setattr(self, field.attname, val) > > if kwargs: > property_names = opts._property_names > unexpected = () > for prop, value in kwargs.items(): > # Any remaining kwargs must correspond to properties or virtual > # fields. > if prop in property_names: > if value is not _DEFERRED: > _setattr(self, prop, value) > else: > try: > opts.get_field(prop) > except FieldDoesNotExist: > unexpected += (prop,) > else: > if value is not _DEFERRED: > _setattr(self, prop, value) > if unexpected: > unexpected_names = ", ".join(repr(n) for n in unexpected) > > raise TypeError( > f"{cls.__name__}() got unexpected keyword arguments: " > f"{unexpected_names}" > ) > E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository' > > .../local/lib/python3.12.../db/models/base.py:567: TypeError > ```graphql_api.tests.test_test_result.TestResultTestCase test_fetch_test_result_failure_rate
Stack Traces | 0.324s run time
> > ``` > self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_failure_rate> > > def setUp(self): > self.owner = OwnerFactory(username="randomOwner") > self.repository = RepositoryFactory( > author=self.owner, > ) > self.test = TestFactory( > name="Test\x1fName", > repository=self.repository, > ) > > self.test_with_flag = TestFactory( > name="Other Test", > repository=self.repository, > ) > > flag = RepositoryFlagFactory( > repository=self.repository, flag_name="test_flag_name" > ) > > > _ = TestFlagBridgeFactory(repository=self.repository, flag=flag) > > graphql_api/tests/test_test_result.py:39: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > .../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__ > return cls.create(**kwargs) > .../local/lib/python3.12............/site-packages/factory/base.py:528: in create > return cls._generate(enums.CREATE_STRATEGY, kwargs) > .../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate > return super()._generate(strategy, params) > .../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate > return step.build() > .../local/lib/python3.12.../site-packages/factory/builder.py:262: in build > instance = self.factory_meta.instantiate( > .../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate > return self.factory._create(model, *args, **kwargs) > .../local/lib/python3.12....../site-packages/factory/django.py:166: in _create > return manager.create(*args, **kwargs) > .../local/lib/python3.12.../db/models/manager.py:87: in manager_method > return getattr(self.get_queryset(), name)(*args, **kwargs) > .../local/lib/python3.12.../db/models/query.py:656: in create > obj = self.model(**kwargs) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = <TestFlagBridge: TestFlagBridge object (None)>, args = () > kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/move>>} > cls = <class 'shared.django_apps.reports.models.TestFlagBridge'> > opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr> > _DEFERRED = <Deferred field> > fields_iter = <tuple_iterator object at 0x7f248a60bfd0>, val = None > field = <django.db.models.fields.related.ForeignKey: test> > is_related_object = True, rel_obj = <Test: Test object (210)> > property_names = frozenset({'pk'}) > > def __init__(self, *args, **kwargs): > # Alias some things as locals to avoid repeat global lookups > cls = self.__class__ > opts = self._meta > _setattr = setattr > _DEFERRED = DEFERRED > if opts.abstract: > raise TypeError("Abstract models cannot be instantiated.") > > pre_init.send(sender=cls, args=args, kwargs=kwargs) > > # Set up the storage for instance state > self._state = ModelState() > > # There is a rather weird disparity here; if kwargs, it's set, then args > # overrides it. It should be one or the other; don't duplicate the work > # The reason for the kwargs check is that standard iterator passes in by > # args, and instantiation for iteration is 33% faster. > if len(args) > len(opts.concrete_fields): > # Daft, but matches old exception sans the err msg. > raise IndexError("Number of args exceeds number of fields") > > if not kwargs: > fields_iter = iter(opts.concrete_fields) > # The ordering of the zip calls matter - zip throws StopIteration > # when an iter throws it. So if the first iter throws it, the second > # is *not* consumed. We rely on this, so don't change the order > # without changing the logic. > for val, field in zip(args, fields_iter): > if val is _DEFERRED: > continue > _setattr(self, field.attname, val) > else: > # Slower, kwargs-ready version. > fields_iter = iter(opts.fields) > for val, field in zip(args, fields_iter): > if val is _DEFERRED: > continue > _setattr(self, field.attname, val) > if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED: > raise TypeError( > f"{cls.__qualname__}() got both positional and " > f"keyword arguments for field '{field.name}'." > ) > > # Now we're left with the unprocessed fields that *must* come from > # keywords, or default. > > for field in fields_iter: > is_related_object = False > # Virtual field > if field.attname not in kwargs and field.column is None: > continue > if kwargs: > if isinstance(field.remote_field, ForeignObjectRel): > try: > # Assume object instance was passed in. > rel_obj = kwargs.pop(field.name) > is_related_object = True > except KeyError: > try: > # Object instance wasn't passed in -- must be an ID. > val = kwargs.pop(field.attname) > except KeyError: > val = field.get_default() > else: > try: > val = kwargs.pop(field.attname) > except KeyError: > # This is done with an exception rather than the > # default argument on pop because we don't want > # get_default() to be evaluated, and then not used. > # Refs #12057. > val = field.get_default() > else: > val = field.get_default() > > if is_related_object: > # If we are passed a related instance, set it using the > # field.name instead of field.attname (e.g. "user" instead of > # "user_id") so that the object gets properly cached (and type > # checked) by the RelatedObjectDescriptor. > if rel_obj is not _DEFERRED: > _setattr(self, field.name, rel_obj) > else: > if val is not _DEFERRED: > _setattr(self, field.attname, val) > > if kwargs: > property_names = opts._property_names > unexpected = () > for prop, value in kwargs.items(): > # Any remaining kwargs must correspond to properties or virtual > # fields. > if prop in property_names: > if value is not _DEFERRED: > _setattr(self, prop, value) > else: > try: > opts.get_field(prop) > except FieldDoesNotExist: > unexpected += (prop,) > else: > if value is not _DEFERRED: > _setattr(self, prop, value) > if unexpected: > unexpected_names = ", ".join(repr(n) for n in unexpected) > > raise TypeError( > f"{cls.__name__}() got unexpected keyword arguments: " > f"{unexpected_names}" > ) > E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository' > > .../local/lib/python3.12.../db/models/base.py:567: TypeError > ```
To view individual test run time comparison to the main branch, go to the Test Analytics Dashboard
Test Failures Detected: Due to failing tests, we cannot provide coverage reports at this time.
Completed 2386 tests with 6 failed
, 2374 passed and 6 skipped.
self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_avg_duration>- **Class name:** graphql_api.tests.test_test_result.TestResultTestCase
def setUp(self):
self.owner = OwnerFactory(username="randomOwner")
self.repository = RepositoryFactory(
author=self.owner,
)
self.test = TestFactory(
name="Test\x1fName",
repository=self.repository,
)
self.test_with_flag = TestFactory(
name="Other Test",
repository=self.repository,
)
flag = RepositoryFlagFactory(
repository=self.repository, flag_name="test_flag_name"
)
> _ = TestFlagBridgeFactory(repository=self.repository, flag=flag)
graphql_api/tests/test_test_result.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__
return cls.create(**kwargs)
.../local/lib/python3.12............/site-packages/factory/base.py:528: in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate
return super()._generate(strategy, params)
.../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate
return step.build()
.../local/lib/python3.12.../site-packages/factory/builder.py:262: in build
instance = self.factory_meta.instantiate(
.../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate
return self.factory._create(model, *args, **kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:166: in _create
return manager.create(*args, **kwargs)
.../local/lib/python3.12.../db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.../local/lib/python3.12.../db/models/query.py:656: in create
obj = self.model(**kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <TestFlagBridge: TestFlagBridge object (None)>, args = ()
kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/surface>>}
cls = <class 'shared.django_apps.reports.models.TestFlagBridge'>
opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr>
_DEFERRED = <Deferred field>
fields_iter = <tuple_iterator object at 0x7f248a50d300>, val = None
field = <django.db.models.fields.related.ForeignKey: test>
is_related_object = True, rel_obj = <Test: Test object (204)>
property_names = frozenset({'pk'})
def __init__(self, *args, **kwargs):
# Alias some things as locals to avoid repeat global lookups
cls = self.__class__
opts = self._meta
_setattr = setattr
_DEFERRED = DEFERRED
if opts.abstract:
raise TypeError("Abstract models cannot be instantiated.")
pre_init.send(sender=cls, args=args, kwargs=kwargs)
# Set up the storage for instance state
self._state = ModelState()
# There is a rather weird disparity here; if kwargs, it's set, then args
# overrides it. It should be one or the other; don't duplicate the work
# The reason for the kwargs check is that standard iterator passes in by
# args, and instantiation for iteration is 33% faster.
if len(args) > len(opts.concrete_fields):
# Daft, but matches old exception sans the err msg.
raise IndexError("Number of args exceeds number of fields")
if not kwargs:
fields_iter = iter(opts.concrete_fields)
# The ordering of the zip calls matter - zip throws StopIteration
# when an iter throws it. So if the first iter throws it, the second
# is *not* consumed. We rely on this, so don't change the order
# without changing the logic.
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
else:
# Slower, kwargs-ready version.
fields_iter = iter(opts.fields)
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED:
raise TypeError(
f"{cls.__qualname__}() got both positional and "
f"keyword arguments for field '{field.name}'."
)
# Now we're left with the unprocessed fields that *must* come from
# keywords, or default.
for field in fields_iter:
is_related_object = False
# Virtual field
if field.attname not in kwargs and field.column is None:
continue
if kwargs:
if isinstance(field.remote_field, ForeignObjectRel):
try:
# Assume object instance was passed in.
rel_obj = kwargs.pop(field.name)
is_related_object = True
except KeyError:
try:
# Object instance wasn't passed in -- must be an ID.
val = kwargs.pop(field.attname)
except KeyError:
val = field.get_default()
else:
try:
val = kwargs.pop(field.attname)
except KeyError:
# This is done with an exception rather than the
# default argument on pop because we don't want
# get_default() to be evaluated, and then not used.
# Refs #12057.
val = field.get_default()
else:
val = field.get_default()
if is_related_object:
# If we are passed a related instance, set it using the
# field.name instead of field.attname (e.g. "user" instead of
# "user_id") so that the object gets properly cached (and type
# checked) by the RelatedObjectDescriptor.
if rel_obj is not _DEFERRED:
_setattr(self, field.name, rel_obj)
else:
if val is not _DEFERRED:
_setattr(self, field.attname, val)
if kwargs:
property_names = opts._property_names
unexpected = ()
for prop, value in kwargs.items():
# Any remaining kwargs must correspond to properties or virtual
# fields.
if prop in property_names:
if value is not _DEFERRED:
_setattr(self, prop, value)
else:
try:
opts.get_field(prop)
except FieldDoesNotExist:
unexpected += (prop,)
else:
if value is not _DEFERRED:
_setattr(self, prop, value)
if unexpected:
unexpected_names = ", ".join(repr(n) for n in unexpected)
> raise TypeError(
f"{cls.__name__}() got unexpected keyword arguments: "
f"{unexpected_names}"
)
E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository'
.../local/lib/python3.12.../db/models/base.py:567: TypeError
self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_commits_failed>- **Class name:** graphql_api.tests.test_test_result.TestResultTestCase
def setUp(self):
self.owner = OwnerFactory(username="randomOwner")
self.repository = RepositoryFactory(
author=self.owner,
)
self.test = TestFactory(
name="Test\x1fName",
repository=self.repository,
)
self.test_with_flag = TestFactory(
name="Other Test",
repository=self.repository,
)
flag = RepositoryFlagFactory(
repository=self.repository, flag_name="test_flag_name"
)
> _ = TestFlagBridgeFactory(repository=self.repository, flag=flag)
graphql_api/tests/test_test_result.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__
return cls.create(**kwargs)
.../local/lib/python3.12............/site-packages/factory/base.py:528: in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate
return super()._generate(strategy, params)
.../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate
return step.build()
.../local/lib/python3.12.../site-packages/factory/builder.py:262: in build
instance = self.factory_meta.instantiate(
.../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate
return self.factory._create(model, *args, **kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:166: in _create
return manager.create(*args, **kwargs)
.../local/lib/python3.12.../db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.../local/lib/python3.12.../db/models/query.py:656: in create
obj = self.model(**kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <TestFlagBridge: TestFlagBridge object (None)>, args = ()
kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/task>>}
cls = <class 'shared.django_apps.reports.models.TestFlagBridge'>
opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr>
_DEFERRED = <Deferred field>
fields_iter = <tuple_iterator object at 0x7f248a685db0>, val = None
field = <django.db.models.fields.related.ForeignKey: test>
is_related_object = True, rel_obj = <Test: Test object (207)>
property_names = frozenset({'pk'})
def __init__(self, *args, **kwargs):
# Alias some things as locals to avoid repeat global lookups
cls = self.__class__
opts = self._meta
_setattr = setattr
_DEFERRED = DEFERRED
if opts.abstract:
raise TypeError("Abstract models cannot be instantiated.")
pre_init.send(sender=cls, args=args, kwargs=kwargs)
# Set up the storage for instance state
self._state = ModelState()
# There is a rather weird disparity here; if kwargs, it's set, then args
# overrides it. It should be one or the other; don't duplicate the work
# The reason for the kwargs check is that standard iterator passes in by
# args, and instantiation for iteration is 33% faster.
if len(args) > len(opts.concrete_fields):
# Daft, but matches old exception sans the err msg.
raise IndexError("Number of args exceeds number of fields")
if not kwargs:
fields_iter = iter(opts.concrete_fields)
# The ordering of the zip calls matter - zip throws StopIteration
# when an iter throws it. So if the first iter throws it, the second
# is *not* consumed. We rely on this, so don't change the order
# without changing the logic.
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
else:
# Slower, kwargs-ready version.
fields_iter = iter(opts.fields)
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED:
raise TypeError(
f"{cls.__qualname__}() got both positional and "
f"keyword arguments for field '{field.name}'."
)
# Now we're left with the unprocessed fields that *must* come from
# keywords, or default.
for field in fields_iter:
is_related_object = False
# Virtual field
if field.attname not in kwargs and field.column is None:
continue
if kwargs:
if isinstance(field.remote_field, ForeignObjectRel):
try:
# Assume object instance was passed in.
rel_obj = kwargs.pop(field.name)
is_related_object = True
except KeyError:
try:
# Object instance wasn't passed in -- must be an ID.
val = kwargs.pop(field.attname)
except KeyError:
val = field.get_default()
else:
try:
val = kwargs.pop(field.attname)
except KeyError:
# This is done with an exception rather than the
# default argument on pop because we don't want
# get_default() to be evaluated, and then not used.
# Refs #12057.
val = field.get_default()
else:
val = field.get_default()
if is_related_object:
# If we are passed a related instance, set it using the
# field.name instead of field.attname (e.g. "user" instead of
# "user_id") so that the object gets properly cached (and type
# checked) by the RelatedObjectDescriptor.
if rel_obj is not _DEFERRED:
_setattr(self, field.name, rel_obj)
else:
if val is not _DEFERRED:
_setattr(self, field.attname, val)
if kwargs:
property_names = opts._property_names
unexpected = ()
for prop, value in kwargs.items():
# Any remaining kwargs must correspond to properties or virtual
# fields.
if prop in property_names:
if value is not _DEFERRED:
_setattr(self, prop, value)
else:
try:
opts.get_field(prop)
except FieldDoesNotExist:
unexpected += (prop,)
else:
if value is not _DEFERRED:
_setattr(self, prop, value)
if unexpected:
unexpected_names = ", ".join(repr(n) for n in unexpected)
> raise TypeError(
f"{cls.__name__}() got unexpected keyword arguments: "
f"{unexpected_names}"
)
E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository'
.../local/lib/python3.12.../db/models/base.py:567: TypeError
self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_failure_rate>- **Class name:** graphql_api.tests.test_test_result.TestResultTestCase
def setUp(self):
self.owner = OwnerFactory(username="randomOwner")
self.repository = RepositoryFactory(
author=self.owner,
)
self.test = TestFactory(
name="Test\x1fName",
repository=self.repository,
)
self.test_with_flag = TestFactory(
name="Other Test",
repository=self.repository,
)
flag = RepositoryFlagFactory(
repository=self.repository, flag_name="test_flag_name"
)
> _ = TestFlagBridgeFactory(repository=self.repository, flag=flag)
graphql_api/tests/test_test_result.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__
return cls.create(**kwargs)
.../local/lib/python3.12............/site-packages/factory/base.py:528: in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate
return super()._generate(strategy, params)
.../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate
return step.build()
.../local/lib/python3.12.../site-packages/factory/builder.py:262: in build
instance = self.factory_meta.instantiate(
.../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate
return self.factory._create(model, *args, **kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:166: in _create
return manager.create(*args, **kwargs)
.../local/lib/python3.12.../db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.../local/lib/python3.12.../db/models/query.py:656: in create
obj = self.model(**kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <TestFlagBridge: TestFlagBridge object (None)>, args = ()
kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/move>>}
cls = <class 'shared.django_apps.reports.models.TestFlagBridge'>
opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr>
_DEFERRED = <Deferred field>
fields_iter = <tuple_iterator object at 0x7f248a60bfd0>, val = None
field = <django.db.models.fields.related.ForeignKey: test>
is_related_object = True, rel_obj = <Test: Test object (210)>
property_names = frozenset({'pk'})
def __init__(self, *args, **kwargs):
# Alias some things as locals to avoid repeat global lookups
cls = self.__class__
opts = self._meta
_setattr = setattr
_DEFERRED = DEFERRED
if opts.abstract:
raise TypeError("Abstract models cannot be instantiated.")
pre_init.send(sender=cls, args=args, kwargs=kwargs)
# Set up the storage for instance state
self._state = ModelState()
# There is a rather weird disparity here; if kwargs, it's set, then args
# overrides it. It should be one or the other; don't duplicate the work
# The reason for the kwargs check is that standard iterator passes in by
# args, and instantiation for iteration is 33% faster.
if len(args) > len(opts.concrete_fields):
# Daft, but matches old exception sans the err msg.
raise IndexError("Number of args exceeds number of fields")
if not kwargs:
fields_iter = iter(opts.concrete_fields)
# The ordering of the zip calls matter - zip throws StopIteration
# when an iter throws it. So if the first iter throws it, the second
# is *not* consumed. We rely on this, so don't change the order
# without changing the logic.
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
else:
# Slower, kwargs-ready version.
fields_iter = iter(opts.fields)
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED:
raise TypeError(
f"{cls.__qualname__}() got both positional and "
f"keyword arguments for field '{field.name}'."
)
# Now we're left with the unprocessed fields that *must* come from
# keywords, or default.
for field in fields_iter:
is_related_object = False
# Virtual field
if field.attname not in kwargs and field.column is None:
continue
if kwargs:
if isinstance(field.remote_field, ForeignObjectRel):
try:
# Assume object instance was passed in.
rel_obj = kwargs.pop(field.name)
is_related_object = True
except KeyError:
try:
# Object instance wasn't passed in -- must be an ID.
val = kwargs.pop(field.attname)
except KeyError:
val = field.get_default()
else:
try:
val = kwargs.pop(field.attname)
except KeyError:
# This is done with an exception rather than the
# default argument on pop because we don't want
# get_default() to be evaluated, and then not used.
# Refs #12057.
val = field.get_default()
else:
val = field.get_default()
if is_related_object:
# If we are passed a related instance, set it using the
# field.name instead of field.attname (e.g. "user" instead of
# "user_id") so that the object gets properly cached (and type
# checked) by the RelatedObjectDescriptor.
if rel_obj is not _DEFERRED:
_setattr(self, field.name, rel_obj)
else:
if val is not _DEFERRED:
_setattr(self, field.attname, val)
if kwargs:
property_names = opts._property_names
unexpected = ()
for prop, value in kwargs.items():
# Any remaining kwargs must correspond to properties or virtual
# fields.
if prop in property_names:
if value is not _DEFERRED:
_setattr(self, prop, value)
else:
try:
opts.get_field(prop)
except FieldDoesNotExist:
unexpected += (prop,)
else:
if value is not _DEFERRED:
_setattr(self, prop, value)
if unexpected:
unexpected_names = ", ".join(repr(n) for n in unexpected)
> raise TypeError(
f"{cls.__name__}() got unexpected keyword arguments: "
f"{unexpected_names}"
)
E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository'
.../local/lib/python3.12.../db/models/base.py:567: TypeError
self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_last_duration>- **Class name:** graphql_api.tests.test_test_result.TestResultTestCase
def setUp(self):
self.owner = OwnerFactory(username="randomOwner")
self.repository = RepositoryFactory(
author=self.owner,
)
self.test = TestFactory(
name="Test\x1fName",
repository=self.repository,
)
self.test_with_flag = TestFactory(
name="Other Test",
repository=self.repository,
)
flag = RepositoryFlagFactory(
repository=self.repository, flag_name="test_flag_name"
)
> _ = TestFlagBridgeFactory(repository=self.repository, flag=flag)
graphql_api/tests/test_test_result.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__
return cls.create(**kwargs)
.../local/lib/python3.12............/site-packages/factory/base.py:528: in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate
return super()._generate(strategy, params)
.../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate
return step.build()
.../local/lib/python3.12.../site-packages/factory/builder.py:262: in build
instance = self.factory_meta.instantiate(
.../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate
return self.factory._create(model, *args, **kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:166: in _create
return manager.create(*args, **kwargs)
.../local/lib/python3.12.../db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.../local/lib/python3.12.../db/models/query.py:656: in create
obj = self.model(**kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <TestFlagBridge: TestFlagBridge object (None)>, args = ()
kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/treatment>>}
cls = <class 'shared.django_apps.reports.models.TestFlagBridge'>
opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr>
_DEFERRED = <Deferred field>
fields_iter = <tuple_iterator object at 0x7f248abe8070>, val = None
field = <django.db.models.fields.related.ForeignKey: test>
is_related_object = True, rel_obj = <Test: Test object (213)>
property_names = frozenset({'pk'})
def __init__(self, *args, **kwargs):
# Alias some things as locals to avoid repeat global lookups
cls = self.__class__
opts = self._meta
_setattr = setattr
_DEFERRED = DEFERRED
if opts.abstract:
raise TypeError("Abstract models cannot be instantiated.")
pre_init.send(sender=cls, args=args, kwargs=kwargs)
# Set up the storage for instance state
self._state = ModelState()
# There is a rather weird disparity here; if kwargs, it's set, then args
# overrides it. It should be one or the other; don't duplicate the work
# The reason for the kwargs check is that standard iterator passes in by
# args, and instantiation for iteration is 33% faster.
if len(args) > len(opts.concrete_fields):
# Daft, but matches old exception sans the err msg.
raise IndexError("Number of args exceeds number of fields")
if not kwargs:
fields_iter = iter(opts.concrete_fields)
# The ordering of the zip calls matter - zip throws StopIteration
# when an iter throws it. So if the first iter throws it, the second
# is *not* consumed. We rely on this, so don't change the order
# without changing the logic.
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
else:
# Slower, kwargs-ready version.
fields_iter = iter(opts.fields)
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED:
raise TypeError(
f"{cls.__qualname__}() got both positional and "
f"keyword arguments for field '{field.name}'."
)
# Now we're left with the unprocessed fields that *must* come from
# keywords, or default.
for field in fields_iter:
is_related_object = False
# Virtual field
if field.attname not in kwargs and field.column is None:
continue
if kwargs:
if isinstance(field.remote_field, ForeignObjectRel):
try:
# Assume object instance was passed in.
rel_obj = kwargs.pop(field.name)
is_related_object = True
except KeyError:
try:
# Object instance wasn't passed in -- must be an ID.
val = kwargs.pop(field.attname)
except KeyError:
val = field.get_default()
else:
try:
val = kwargs.pop(field.attname)
except KeyError:
# This is done with an exception rather than the
# default argument on pop because we don't want
# get_default() to be evaluated, and then not used.
# Refs #12057.
val = field.get_default()
else:
val = field.get_default()
if is_related_object:
# If we are passed a related instance, set it using the
# field.name instead of field.attname (e.g. "user" instead of
# "user_id") so that the object gets properly cached (and type
# checked) by the RelatedObjectDescriptor.
if rel_obj is not _DEFERRED:
_setattr(self, field.name, rel_obj)
else:
if val is not _DEFERRED:
_setattr(self, field.attname, val)
if kwargs:
property_names = opts._property_names
unexpected = ()
for prop, value in kwargs.items():
# Any remaining kwargs must correspond to properties or virtual
# fields.
if prop in property_names:
if value is not _DEFERRED:
_setattr(self, prop, value)
else:
try:
opts.get_field(prop)
except FieldDoesNotExist:
unexpected += (prop,)
else:
if value is not _DEFERRED:
_setattr(self, prop, value)
if unexpected:
unexpected_names = ", ".join(repr(n) for n in unexpected)
> raise TypeError(
f"{cls.__name__}() got unexpected keyword arguments: "
f"{unexpected_names}"
)
E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository'
.../local/lib/python3.12.../db/models/base.py:567: TypeError
self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_name>- **Class name:** graphql_api.tests.test_test_result.TestResultTestCase
def setUp(self):
self.owner = OwnerFactory(username="randomOwner")
self.repository = RepositoryFactory(
author=self.owner,
)
self.test = TestFactory(
name="Test\x1fName",
repository=self.repository,
)
self.test_with_flag = TestFactory(
name="Other Test",
repository=self.repository,
)
flag = RepositoryFlagFactory(
repository=self.repository, flag_name="test_flag_name"
)
> _ = TestFlagBridgeFactory(repository=self.repository, flag=flag)
graphql_api/tests/test_test_result.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__
return cls.create(**kwargs)
.../local/lib/python3.12............/site-packages/factory/base.py:528: in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate
return super()._generate(strategy, params)
.../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate
return step.build()
.../local/lib/python3.12.../site-packages/factory/builder.py:262: in build
instance = self.factory_meta.instantiate(
.../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate
return self.factory._create(model, *args, **kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:166: in _create
return manager.create(*args, **kwargs)
.../local/lib/python3.12.../db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.../local/lib/python3.12.../db/models/query.py:656: in create
obj = self.model(**kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <TestFlagBridge: TestFlagBridge object (None)>, args = ()
kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/industry>>}
cls = <class 'shared.django_apps.reports.models.TestFlagBridge'>
opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr>
_DEFERRED = <Deferred field>
fields_iter = <tuple_iterator object at 0x7f248a609d50>, val = None
field = <django.db.models.fields.related.ForeignKey: test>
is_related_object = True, rel_obj = <Test: Test object (216)>
property_names = frozenset({'pk'})
def __init__(self, *args, **kwargs):
# Alias some things as locals to avoid repeat global lookups
cls = self.__class__
opts = self._meta
_setattr = setattr
_DEFERRED = DEFERRED
if opts.abstract:
raise TypeError("Abstract models cannot be instantiated.")
pre_init.send(sender=cls, args=args, kwargs=kwargs)
# Set up the storage for instance state
self._state = ModelState()
# There is a rather weird disparity here; if kwargs, it's set, then args
# overrides it. It should be one or the other; don't duplicate the work
# The reason for the kwargs check is that standard iterator passes in by
# args, and instantiation for iteration is 33% faster.
if len(args) > len(opts.concrete_fields):
# Daft, but matches old exception sans the err msg.
raise IndexError("Number of args exceeds number of fields")
if not kwargs:
fields_iter = iter(opts.concrete_fields)
# The ordering of the zip calls matter - zip throws StopIteration
# when an iter throws it. So if the first iter throws it, the second
# is *not* consumed. We rely on this, so don't change the order
# without changing the logic.
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
else:
# Slower, kwargs-ready version.
fields_iter = iter(opts.fields)
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED:
raise TypeError(
f"{cls.__qualname__}() got both positional and "
f"keyword arguments for field '{field.name}'."
)
# Now we're left with the unprocessed fields that *must* come from
# keywords, or default.
for field in fields_iter:
is_related_object = False
# Virtual field
if field.attname not in kwargs and field.column is None:
continue
if kwargs:
if isinstance(field.remote_field, ForeignObjectRel):
try:
# Assume object instance was passed in.
rel_obj = kwargs.pop(field.name)
is_related_object = True
except KeyError:
try:
# Object instance wasn't passed in -- must be an ID.
val = kwargs.pop(field.attname)
except KeyError:
val = field.get_default()
else:
try:
val = kwargs.pop(field.attname)
except KeyError:
# This is done with an exception rather than the
# default argument on pop because we don't want
# get_default() to be evaluated, and then not used.
# Refs #12057.
val = field.get_default()
else:
val = field.get_default()
if is_related_object:
# If we are passed a related instance, set it using the
# field.name instead of field.attname (e.g. "user" instead of
# "user_id") so that the object gets properly cached (and type
# checked) by the RelatedObjectDescriptor.
if rel_obj is not _DEFERRED:
_setattr(self, field.name, rel_obj)
else:
if val is not _DEFERRED:
_setattr(self, field.attname, val)
if kwargs:
property_names = opts._property_names
unexpected = ()
for prop, value in kwargs.items():
# Any remaining kwargs must correspond to properties or virtual
# fields.
if prop in property_names:
if value is not _DEFERRED:
_setattr(self, prop, value)
else:
try:
opts.get_field(prop)
except FieldDoesNotExist:
unexpected += (prop,)
else:
if value is not _DEFERRED:
_setattr(self, prop, value)
if unexpected:
unexpected_names = ", ".join(repr(n) for n in unexpected)
> raise TypeError(
f"{cls.__name__}() got unexpected keyword arguments: "
f"{unexpected_names}"
)
E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository'
.../local/lib/python3.12.../db/models/base.py:567: TypeError
self = <graphql_api.tests.test_test_result.TestResultTestCase testMethod=test_fetch_test_result_updated_at>
def setUp(self):
self.owner = OwnerFactory(username="randomOwner")
self.repository = RepositoryFactory(
author=self.owner,
)
self.test = TestFactory(
name="Test\x1fName",
repository=self.repository,
)
self.test_with_flag = TestFactory(
name="Other Test",
repository=self.repository,
)
flag = RepositoryFlagFactory(
repository=self.repository, flag_name="test_flag_name"
)
> _ = TestFlagBridgeFactory(repository=self.repository, flag=flag)
graphql_api/tests/test_test_result.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.../local/lib/python3.12............/site-packages/factory/base.py:40: in __call__
return cls.create(**kwargs)
.../local/lib/python3.12............/site-packages/factory/base.py:528: in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:117: in _generate
return super()._generate(strategy, params)
.../local/lib/python3.12............/site-packages/factory/base.py:465: in _generate
return step.build()
.../local/lib/python3.12.../site-packages/factory/builder.py:262: in build
instance = self.factory_meta.instantiate(
.../local/lib/python3.12............/site-packages/factory/base.py:317: in instantiate
return self.factory._create(model, *args, **kwargs)
.../local/lib/python3.12....../site-packages/factory/django.py:166: in _create
return manager.create(*args, **kwargs)
.../local/lib/python3.12.../db/models/manager.py:87: in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
.../local/lib/python3.12.../db/models/query.py:656: in create
obj = self.model(**kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <TestFlagBridge: TestFlagBridge object (None)>, args = ()
kwargs = {'repository': <Repository: Repo<Owner<github/randomOwner>/operation>>}
cls = <class 'shared.django_apps.reports.models.TestFlagBridge'>
opts = <Options for TestFlagBridge>, _setattr = <built-in function setattr>
_DEFERRED = <Deferred field>
fields_iter = <tuple_iterator object at 0x7f248aa86e90>, val = None
field = <django.db.models.fields.related.ForeignKey: test>
is_related_object = True, rel_obj = <Test: Test object (219)>
property_names = frozenset({'pk'})
def __init__(self, *args, **kwargs):
# Alias some things as locals to avoid repeat global lookups
cls = self.__class__
opts = self._meta
_setattr = setattr
_DEFERRED = DEFERRED
if opts.abstract:
raise TypeError("Abstract models cannot be instantiated.")
pre_init.send(sender=cls, args=args, kwargs=kwargs)
# Set up the storage for instance state
self._state = ModelState()
# There is a rather weird disparity here; if kwargs, it's set, then args
# overrides it. It should be one or the other; don't duplicate the work
# The reason for the kwargs check is that standard iterator passes in by
# args, and instantiation for iteration is 33% faster.
if len(args) > len(opts.concrete_fields):
# Daft, but matches old exception sans the err msg.
raise IndexError("Number of args exceeds number of fields")
if not kwargs:
fields_iter = iter(opts.concrete_fields)
# The ordering of the zip calls matter - zip throws StopIteration
# when an iter throws it. So if the first iter throws it, the second
# is *not* consumed. We rely on this, so don't change the order
# without changing the logic.
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
else:
# Slower, kwargs-ready version.
fields_iter = iter(opts.fields)
for val, field in zip(args, fields_iter):
if val is _DEFERRED:
continue
_setattr(self, field.attname, val)
if kwargs.pop(field.name, NOT_PROVIDED) is not NOT_PROVIDED:
raise TypeError(
f"{cls.__qualname__}() got both positional and "
f"keyword arguments for field '{field.name}'."
)
# Now we're left with the unprocessed fields that *must* come from
# keywords, or default.
for field in fields_iter:
is_related_object = False
# Virtual field
if field.attname not in kwargs and field.column is None:
continue
if kwargs:
if isinstance(field.remote_field, ForeignObjectRel):
try:
# Assume object instance was passed in.
rel_obj = kwargs.pop(field.name)
is_related_object = True
except KeyError:
try:
# Object instance wasn't passed in -- must be an ID.
val = kwargs.pop(field.attname)
except KeyError:
val = field.get_default()
else:
try:
val = kwargs.pop(field.attname)
except KeyError:
# This is done with an exception rather than the
# default argument on pop because we don't want
# get_default() to be evaluated, and then not used.
# Refs #12057.
val = field.get_default()
else:
val = field.get_default()
if is_related_object:
# If we are passed a related instance, set it using the
# field.name instead of field.attname (e.g. "user" instead of
# "user_id") so that the object gets properly cached (and type
# checked) by the RelatedObjectDescriptor.
if rel_obj is not _DEFERRED:
_setattr(self, field.name, rel_obj)
else:
if val is not _DEFERRED:
_setattr(self, field.attname, val)
if kwargs:
property_names = opts._property_names
unexpected = ()
for prop, value in kwargs.items():
# Any remaining kwargs must correspond to properties or virtual
# fields.
if prop in property_names:
if value is not _DEFERRED:
_setattr(self, prop, value)
else:
try:
opts.get_field(prop)
except FieldDoesNotExist:
unexpected += (prop,)
else:
if value is not _DEFERRED:
_setattr(self, prop, value)
if unexpected:
unexpected_names = ", ".join(repr(n) for n in unexpected)
> raise TypeError(
f"{cls.__name__}() got unexpected keyword arguments: "
f"{unexpected_names}"
)
E TypeError: TestFlagBridge() got unexpected keyword arguments: 'repository'
.../local/lib/python3.12.../db/models/base.py:567: TypeError
we want to be able to filter test results by a list of flags and by a list of testsuite names so this adds that functionality.
this is done by adding testsuites and flags fields to the TestResultsFilteringParameter GQL model
to filter by flags this uses the TestFlagBridge database model