Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4106f18

Browse files
committed
Use items and items_all correctly
#717
1 parenta26349d commit4106f18

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

‎git/config.py

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,19 @@ def setlast(self, key, value):
176176
prior=super(_OMD,self).__getitem__(key)
177177
prior[-1]=value
178178

179+
defget(self,key,default=None):
180+
returnsuper(_OMD,self).get(key, [default])[-1]
181+
179182
defgetall(self,key):
180183
returnsuper(_OMD,self).__getitem__(key)
181184

185+
defitems(self):
186+
"""List of (key, last value for key)."""
187+
return [(k,self[k])forkinself]
188+
182189
defitems_all(self):
183-
return [(k,self.get(k))forkinself]
190+
"""List of (key, list of values for key)."""
191+
return [(k,self.getall(k))forkinself]
184192

185193

186194
classGitConfigParser(with_metaclass(MetaParserBuilder,cp.RawConfigParser,object)):
@@ -481,14 +489,9 @@ def _write(self, fp):
481489
git compatible format"""
482490
defwrite_section(name,section_dict):
483491
fp.write(("[%s]\n"%name).encode(defenc))
484-
for (key,value)insection_dict.items_all():
492+
for (key,values)insection_dict.items_all():
485493
ifkey=="__name__":
486494
continue
487-
elifisinstance(value,list):
488-
values=value
489-
else:
490-
# self._defaults isn't a multidict
491-
values= [value]
492495

493496
forvinvalues:
494497
fp.write(("\t%s = %s\n"% (key,self._value_to_string(v).replace('\n','\n\t'))).encode(defenc))
@@ -506,25 +509,19 @@ def items(self, section_name):
506509

507510
defitems_all(self,section_name):
508511
""":return: list((option, [values...]), ...) pairs of all items in the given section"""
509-
rv=OrderedDict()
510-
fork,vinself._defaults:
511-
rv[k]= [v]
512+
rv=_OMD(self._defaults)
512513

513-
fork,vinself._sections[section_name].items_all():
514+
fork,vsinself._sections[section_name].items_all():
514515
ifk=='__name__':
515516
continue
516517

517-
ifknotinrv:
518-
rv[k]=v
519-
continue
520-
521-
ifrv[k]==v:
518+
ifkinrvandrv.getall(k)==vs:
522519
continue
523520

524-
rv[k].extend(v)
521+
forvinvs:
522+
rv.add(k,v)
525523

526-
# For consistency with items(), return a list, even in Python 3
527-
returnlist(rv.items())
524+
returnrv.items_all()
528525

529526
@needs_values
530527
defwrite(self):

‎git/test/test_config.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
GitConfigParser
1212
)
1313
fromgit.compatimportstring_types
14-
fromgit.configimportcp
14+
fromgit.configimport_OMD,cp
1515
fromgit.test.libimport (
1616
TestCase,
1717
fixture_path,
@@ -362,3 +362,13 @@ def test_add_to_multiple(self):
362362
self.assertEqual(cr.items_all('section1'),
363363
[('option1', ['value1a','value1b','value1c']),
364364
('other_option1', ['other_value1'])])
365+
366+
deftest_setlast(self):
367+
# Test directly, not covered by higher-level tests.
368+
omd=_OMD()
369+
omd.setlast('key','value1')
370+
self.assertEqual(omd['key'],'value1')
371+
self.assertEqual(omd.getall('key'), ['value1'])
372+
omd.setlast('key','value2')
373+
self.assertEqual(omd['key'],'value2')
374+
self.assertEqual(omd.getall('key'), ['value2'])

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp