bpo-36431: Use PEP 448 dict unpacking for merging two dicts. (GH-12553) · python/cpython@da08470 (original) (raw)

`@@ -285,10 +285,7 @@ def new(*args, **keywords):

`

285

285

``

286

286

`if hasattr(func, "func"):

`

287

287

`args = func.args + args

`

288

``

`-

tmpkw = func.keywords.copy()

`

289

``

`-

tmpkw.update(keywords)

`

290

``

`-

keywords = tmpkw

`

291

``

`-

del tmpkw

`

``

288

`+

keywords = {**func.keywords, **keywords}

`

292

289

`func = func.func

`

293

290

``

294

291

`self = super(partial, cls).new(cls)

`

`@@ -302,9 +299,8 @@ def call(*args, **keywords):

`

302

299

`if not args:

`

303

300

`raise TypeError("descriptor 'call' of partial needs an argument")

`

304

301

`self, *args = args

`

305

``

`-

newkeywords = self.keywords.copy()

`

306

``

`-

newkeywords.update(keywords)

`

307

``

`-

return self.func(*self.args, *args, **newkeywords)

`

``

302

`+

keywords = {**self.keywords, **keywords}

`

``

303

`+

return self.func(*self.args, *args, **keywords)

`

308

304

``

309

305

`@recursive_repr()

`

310

306

`def repr(self):

`

`@@ -371,8 +367,7 @@ def init(self, func, *args, **keywords):

`

371

367

`# it's also more efficient since only one function will be called

`

372

368

`self.func = func.func

`

373

369

`self.args = func.args + args

`

374

``

`-

self.keywords = func.keywords.copy()

`

375

``

`-

self.keywords.update(keywords)

`

``

370

`+

self.keywords = {**func.keywords, **keywords}

`

376

371

`else:

`

377

372

`self.func = func

`

378

373

`self.args = args

`

`@@ -391,11 +386,9 @@ def repr(self):

`

391

386

``

392

387

`def _make_unbound_method(self):

`

393

388

`def _method(*args, **keywords):

`

394

``

`-

call_keywords = self.keywords.copy()

`

395

``

`-

call_keywords.update(keywords)

`

396

``

`-

cls_or_self, *rest = args

`

397

``

`-

call_args = (cls_or_self,) + self.args + tuple(rest)

`

398

``

`-

return self.func(*call_args, **call_keywords)

`

``

389

`+

cls_or_self, *args = args

`

``

390

`+

keywords = {**self.keywords, **keywords}

`

``

391

`+

return self.func(cls_or_self, *self.args, *args, **keywords)

`

399

392

`_method.isabstractmethod = self.isabstractmethod

`

400

393

`_method._partialmethod = self

`

401

394

`return _method

`