comparison configmix/__init__.py @ 638:ef485419d723

FIX: Now the merge logic does not interpolate variables in any case. Previously it did sometimes.
author Franz Glasner <f.glasner@feldmann-mg.com>
date Fri, 04 Mar 2022 18:14:12 +0100
parents 9ab72688278b
children 226aae226b8d
comparison
equal deleted inserted replaced
637:4499e9b4855d 638:ef485419d723
425 if isinstance(user, dict) and isinstance(default, dict): 425 if isinstance(user, dict) and isinstance(default, dict):
426 for k, v in default.items(): 426 for k, v in default.items():
427 if filter_comments and _is_comment(k): 427 if filter_comments and _is_comment(k):
428 continue 428 continue
429 if k in user: 429 if k in user:
430 if user[k] == constants.DEL_VALUE: 430 if isinstance(user, Configuration):
431 ukv = user.getitem_ns(k)
432 else:
433 ukv = user[k]
434 if ukv == constants.DEL_VALUE:
431 # do not copy 435 # do not copy
432 del user[k] 436 del user[k]
433 else: 437 else:
434 if isinstance(user, Configuration): 438 user[k] = _merge(ukv, v, filter_comments)
435 user[k] = _merge(
436 user.getitem_ns(k), v, filter_comments)
437 else:
438 user[k] = _merge(user[k], v, filter_comments)
439 else: 439 else:
440 user[k] = v 440 user[k] = v
441 _filter_deletions(user) 441 _filter_deletions(user)
442 return user 442 return user
443 443
449 if isinstance(user, dict) and isinstance(default, dict): 449 if isinstance(user, dict) and isinstance(default, dict):
450 for k, v in default.items(): 450 for k, v in default.items():
451 if filter_comments and _is_comment(k): 451 if filter_comments and _is_comment(k):
452 continue 452 continue
453 if k in user: 453 if k in user:
454 if user[k] == constants.DEL_VALUE: 454 if isinstance(user, Configuration):
455 ukv = user.getitem_ns(k)
456 else:
457 ukv = user[k]
458 if ukv == constants.DEL_VALUE:
455 # do not copy 459 # do not copy
456 del user[k] 460 del user[k]
457 else: 461 else:
458 if isinstance(user, Configuration): 462 user[k] = _merge(ukv, v, filter_comments)
459 user[k] = _merge(
460 user.getitem_ns(k), v, filter_comments)
461 else:
462 user[k] = _merge(user[k], v, filter_comments)
463 else: 463 else:
464 user[k] = v 464 user[k] = v
465 return user 465 return user
466 466
467 467
486 if isinstance(user, dict) and isinstance(default, dict): 486 if isinstance(user, dict) and isinstance(default, dict):
487 for k, v in default.items(): 487 for k, v in default.items():
488 if filter_comments and _is_comment(k): 488 if filter_comments and _is_comment(k):
489 continue 489 continue
490 if k in user: 490 if k in user:
491 if user[k] == constants.DEL_VALUE: 491 if isinstance(user, Configuration):
492 ukv = user.getitem_ns(k)
493 else:
494 ukv = user[k]
495 if ukv == constants.DEL_VALUE:
492 # do not copy 496 # do not copy
493 del user[k] 497 del user[k]
494 else: 498 else:
495 if isinstance(user, Configuration): 499 user[k] = _safe_merge(ukv, v, filter_comments)
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)
500 else: 500 else:
501 user[k] = copy.deepcopy(v) 501 user[k] = copy.deepcopy(v)
502 _filter_deletions(user) 502 _filter_deletions(user)
503 return user 503 return user
504 504
510 if isinstance(user, dict) and isinstance(default, dict): 510 if isinstance(user, dict) and isinstance(default, dict):
511 for k, v in default.items(): 511 for k, v in default.items():
512 if filter_comments and _is_comment(k): 512 if filter_comments and _is_comment(k):
513 continue 513 continue
514 if k in user: 514 if k in user:
515 if isinstance(user, Configuration):
516 ukv = user.getitem_ns(k)
517 else:
518 ukv = user[k]
515 if user[k] == constants.DEL_VALUE: 519 if user[k] == constants.DEL_VALUE:
516 # do not copy 520 # do not copy
517 del user[k] 521 del user[k]
518 else: 522 else:
519 if isinstance(user, Configuration): 523 user[k] = _safe_merge(ukv, v, filter_comments)
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)
524 else: 524 else:
525 user[k] = copy.deepcopy(v) 525 user[k] = copy.deepcopy(v)
526 return user 526 return user
527 527
528 528