Mercurial > hgrepos > Python > libs > ConfigMix
comparison configmix/__init__.py @ 443:23941c014130
FIX: Merge properly when the configuration's __getitem__ do now interpolate: prohibit duplicate interpolation and interpolation while merging
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 10 Dec 2021 09:27:47 +0100 |
| parents | fa08713a4992 |
| children | 7ff4ee40b36c |
comparison
equal
deleted
inserted
replaced
| 442:94cf5a8722d6 | 443:23941c014130 |
|---|---|
| 429 if k in user: | 429 if k in user: |
| 430 if user[k] == constants.DEL_VALUE: | 430 if user[k] == constants.DEL_VALUE: |
| 431 # do not copy | 431 # do not copy |
| 432 del user[k] | 432 del user[k] |
| 433 else: | 433 else: |
| 434 user[k] = _merge(user[k], v, filter_comments) | 434 if isinstance(user, Configuration): |
| 435 user[k] = _merge( | |
| 436 user.getitem_ns(k), v, filter_comments) | |
| 437 else: | |
| 438 user[k] = _merge(user[k], v, filter_comments) | |
| 435 else: | 439 else: |
| 436 user[k] = v | 440 user[k] = v |
| 437 _filter_deletions(user) | 441 _filter_deletions(user) |
| 438 return user | 442 return user |
| 439 | 443 |
| 449 if k in user: | 453 if k in user: |
| 450 if user[k] == constants.DEL_VALUE: | 454 if user[k] == constants.DEL_VALUE: |
| 451 # do not copy | 455 # do not copy |
| 452 del user[k] | 456 del user[k] |
| 453 else: | 457 else: |
| 454 user[k] = _merge(user[k], v, filter_comments) | 458 if isinstance(user, Configuration): |
| 459 user[k] = _merge( | |
| 460 user.getitem_ns(k), v, filter_comments) | |
| 461 else: | |
| 462 user[k] = _merge(user[k], v, filter_comments) | |
| 455 else: | 463 else: |
| 456 user[k] = v | 464 user[k] = v |
| 457 return user | 465 return user |
| 458 | 466 |
| 459 | 467 |
| 482 if k in user: | 490 if k in user: |
| 483 if user[k] == constants.DEL_VALUE: | 491 if user[k] == constants.DEL_VALUE: |
| 484 # do not copy | 492 # do not copy |
| 485 del user[k] | 493 del user[k] |
| 486 else: | 494 else: |
| 487 user[k] = _safe_merge(user[k], v, filter_comments) | 495 if isinstance(user, Configuration): |
| 496 user[k] = _safe_merge( | |
| 497 user.getitem_ns(k), v, filter_comments) | |
| 498 else: | |
| 499 user[k] = _safe_merge(user[k], v, filter_comments) | |
| 488 else: | 500 else: |
| 489 user[k] = copy.deepcopy(v) | 501 user[k] = copy.deepcopy(v) |
| 490 _filter_deletions(user) | 502 _filter_deletions(user) |
| 491 return user | 503 return user |
| 492 | 504 |
| 502 if k in user: | 514 if k in user: |
| 503 if user[k] == constants.DEL_VALUE: | 515 if user[k] == constants.DEL_VALUE: |
| 504 # do not copy | 516 # do not copy |
| 505 del user[k] | 517 del user[k] |
| 506 else: | 518 else: |
| 507 user[k] = _safe_merge(user[k], v, filter_comments) | 519 if isinstance(user, Configuration): |
| 520 user[k] = _safe_merge( | |
| 521 user.getitem_ns(k), v, filter_comments) | |
| 522 else: | |
| 523 user[k] = _safe_merge(user[k], v, filter_comments) | |
| 508 else: | 524 else: |
| 509 user[k] = copy.deepcopy(v) | 525 user[k] = copy.deepcopy(v) |
| 510 return user | 526 return user |
| 511 | 527 |
| 512 | 528 |
| 518 | 534 |
| 519 """ | 535 """ |
| 520 if not isinstance(d, dict): | 536 if not isinstance(d, dict): |
| 521 return | 537 return |
| 522 # use a copy of the keys because we change `d` while iterating | 538 # use a copy of the keys because we change `d` while iterating |
| 523 for k in list(d.keys()): | 539 if isinstance(d, Configuration): |
| 524 if _is_comment(k): | 540 for k in list(d.keys()): |
| 525 del d[k] | 541 if _is_comment(k): |
| 526 else: | 542 del d[k] |
| 527 if isinstance(d[k], dict): | 543 else: |
| 528 _filter_comments(d[k]) | 544 dk = d.getitem_ns(k) |
| 545 if isinstance(dk, dict): | |
| 546 _filter_comments(dk) | |
| 547 else: | |
| 548 for k in list(d.keys()): | |
| 549 if _is_comment(k): | |
| 550 del d[k] | |
| 551 else: | |
| 552 if isinstance(d[k], dict): | |
| 553 _filter_comments(d[k]) | |
| 529 | 554 |
| 530 | 555 |
| 531 def _is_comment(k): | 556 def _is_comment(k): |
| 532 for i in constants.COMMENTS: | 557 for i in constants.COMMENTS: |
| 533 try: | 558 try: |
| 546 | 571 |
| 547 """ | 572 """ |
| 548 if not isinstance(d, dict): | 573 if not isinstance(d, dict): |
| 549 return | 574 return |
| 550 # use a copy of the items because we change `d` while iterating | 575 # use a copy of the items because we change `d` while iterating |
| 551 for k, v in list(d.items()): | 576 if isinstance(d, Configuration): |
| 552 if v == constants.DEL_VALUE: | 577 for k, v in list(d.items()): |
| 553 del d[k] | 578 if v == constants.DEL_VALUE: |
| 554 else: | 579 del d[k] |
| 555 if isinstance(d[k], dict): | 580 else: |
| 556 _filter_deletions(d[k]) | 581 dk = d.getitem_ns(k) |
| 582 if isinstance(dk, dict): | |
| 583 _filter_deletions(dk) | |
| 584 else: | |
| 585 for k, v in list(d.items()): | |
| 586 if v == constants.DEL_VALUE: | |
| 587 del d[k] | |
| 588 else: | |
| 589 if isinstance(d[k], dict): | |
| 590 _filter_deletions(d[k]) | |
| 557 | 591 |
| 558 | 592 |
| 559 # | 593 # |
| 560 # Init loader defaults: mode->loader and extension->mode | 594 # Init loader defaults: mode->loader and extension->mode |
| 561 # | 595 # |
