def test_nt_with_defs_delegates_to_nt(nt_mock): class NTClass(object): # pylint: disable=too-few-public-methods pass nt_mock.return_value = NTClass tuple_class = namedtuple_with_defaults(sentinel.name, sentinel.fields, defaults=sentinel.defaults) ok_(NTClass in tuple_class.__bases__, 'NamedTuple is not base of returned tuple class') nt_mock.assert_called_once_with(sentinel.name, sentinel.fields)
def test_mutable_defaults_work(self): TestTuple = namedtuple_with_defaults( 'TestTuple', 'a', defaults=lambda: { 'a': [], }) first = TestTuple() first.a.append('first') second = TestTuple() second.a.append('second') self.assertEqual(first.a, ['first']) self.assertEqual(second.a, ['second'])
def test_mutable_defaults_work(self): TestTuple = namedtuple_with_defaults('TestTuple', 'a', defaults=lambda: { 'a': [], }) first = TestTuple() first.a.append('first') second = TestTuple() second.a.append('second') self.assertEqual(first.a, ['first']) self.assertEqual(second.a, ['second'])
try: return bits.index(pattern) except ValueError: return len(bits) min_index = min(get_index(p, bits) for p in self._patterns) return bits[:min_index], min_index def to_bits(self, val, **kwargs): # pylint: disable=no-self-use return val SchemaPiece = namedtuple_with_defaults( 'SchemaPiece', ['field', 'type', 'condition', 'multiple'], defaults={'condition': None, 'multiple': None}) class ParseError(Exception): pass class BinarySchema(object): UNPARSED_FIELD = '__unparsed' PARENT_FIELD = '__parent' def __init__(self, schema): self._schema = schema
from .constants import DEFAULT_CONVERSIONS from .conversions import get_conversion_table, CantConvert logger = logging.getLogger(__name__) # pylint: disable=invalid-name _LogData = namedtuple_with_defaults( 'LogData', [ 'name', 'nutritional_value', 'parts', 'log_line', 'incomplete', 'ingredient', 'is_leaf', ], defaults=lambda: { 'parts': [], 'log_line': None, 'incomplete': False, 'ingredient': None, 'is_leaf': False, } ) # yapf: disable class LogData(_LogData): __slots__ = () @classmethod
def setUp(self): # pylint: disable=too-few-public-methods self.tuple_class = namedtuple_with_defaults( 'TestTuple', 'a,b,c', defaults=lambda: { 'b': sentinel.b_default, })
def setUp(self): self.tuple_class = namedtuple_with_defaults( 'TestTuple', ['a', 'b', 'c'], defaults=dict(b=sentinel.b_default))
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import absolute_import, division import collections from pignacio_scripts.namedtuple import namedtuple_with_defaults from .logger import Logger from .schema import Integer, BinarySchema, SchemaPiece PropertyDef = namedtuple_with_defaults('PropertyDef', ['id', 'field_sizes', 'fmt_string', 'offsets'], defaults={'offsets': None}) _Property = collections.namedtuple('Property', ['definition', 'values']) PropList = collections.namedtuple('PropList', ['properties', 'terminated']) class Property(_Property): __slots__ = () def as_game_str(self): return self.definition.fmt_string.format(*self.values) _PROPERTIES = {p.id: p for p in [ PropertyDef(0, [10], '{:+d} to Strength', offsets=[32]), PropertyDef(1, [10], '{:+d} to Energy', offsets=[32]), PropertyDef(2, [10], '{:+d} to Dexterity', offsets=[32]), PropertyDef(3, [10], '{:+d} to Vitality', offsets=[32]), PropertyDef(7, [10], '{:+d} to Life', offsets=[32]),
def default_sort_key(item): return ( # 1. Sort by quality -item.quality_id(), # 2.a. Magic items: most affixes first, then sort by affix -len([affix for affix in item.magic_affixes() if affix]), item.magic_affixes(), ) def default_sort(items): return sorted(items, key=default_sort_key) ItemFilter = namedtuple_with_defaults('ItemFilter', ['name', 'filter', 'sort'], defaults={'sort': default_sort}) def item_type_filter(item_type): return ItemFilter(name=item_type, filter=lambda i: i.type() == item_type) def items_to_rows(items): rows = collections.defaultdict(list) for item in items: item_type = item['item']['item_type'] rows[item_type].append(item) return [row for _id, row in sorted(rows.items())]