Esempio n. 1
0
 def diff(self, r, *, where):
     filename = os.path.relpath(r.name, start=where)
     before = self.before_data(r.doc)
     after = self.after_data(r.doc)
     yield from diff(
         before, after, fromfile=f"before:{filename}", tofile=f" after:{filename}"
     )
Esempio n. 2
0
 def diff(self, r, *, where):
     filename = os.path.relpath(r.name, start=where)
     before = self.before_data(r.doc)
     after = self.after_data(r.doc)
     yield from diff(before,
                     after,
                     fromfile=f"before:{filename}",
                     tofile=f" after:{filename}")
Esempio n. 3
0
 def migrate_dryrun_and_diff(self, doc=None):
     self._prepare(doc)
     yield self
     resolvers = set(item.resolver for item in self.item_map.values())
     for r in resolvers:
         print(os.path.relpath(r.name, start=os.getcwd()))
         for line in diff(self.before_data(r.doc), self.after_data(r.doc)):
             print(line)
Esempio n. 4
0
 def migrate_dryrun_and_diff(self, doc=None):
     self._prepare(doc)
     yield self
     resolvers = set(item.resolver for item in self.item_map.values())
     for r in resolvers:
         print(os.path.relpath(r.name, start=os.getcwd()))
         for line in diff(self.before_data(r.doc), self.after_data(r.doc)):
             print(line)
Esempio n. 5
0
def diff(
    *,
    normalize: bool,
    sort_keys: bool,
    skip_empty: bool,
    left: dict,
    right: dict,
    n: int,
    input_format: str,
    output_format: str = "diff",
    verbose: bool = False
):
    """diff dict"""
    from dictknife.diff import diff, diff_rows, make_jsonpatch

    with open(left) as rf:
        left_data = loading.load(rf, format=input_format)
        with open(right) as rf:
            right_data = loading.load(rf, format=input_format)

            if output_format == "diff":
                for line in diff(
                    left_data,
                    right_data,
                    fromfile=left,
                    tofile=right,
                    n=n,
                    normalize=normalize,
                    sort_keys=sort_keys,
                ):
                    print(line)
            elif output_format == "jsonpatch":
                r = make_jsonpatch(left_data, right_data, verbose=verbose)
                loading.dumpfile(list(r), format="json")
            else:
                if output_format == "dict":
                    output_format = "json"
                diff_key = "diff"
                rows = diff_rows(
                    left_data,
                    right_data,
                    fromfile=left,
                    tofile=right,
                    diff_key=diff_key,
                    normalize=normalize,
                )
                if skip_empty:
                    rows = [row for row in rows if row[diff_key] not in ("", 0)]
                loading.dumpfile(rows, format=output_format)
Esempio n. 6
0
    def migrate_dryrun_and_diff(self, doc=None, *, where=None):
        where = where or os.getcwd()
        logger.debug("prepare (where=%s)", where)
        self._prepare(doc)

        yield self

        resolvers = set(item.resolver for item in self.item_map.values())
        logger.info("migrate dry run and diff")
        for r in resolvers:
            filename = os.path.relpath(r.name, start=where)
            before = self.before_data(r.doc)
            after = self.after_data(r.doc)
            for line in diff(
                before,
                after,
                fromfile=f"before:{filename}",
                tofile=f" after:{filename}",
            ):
                print(line)
Esempio n. 7
0
    def migrate_dryrun_and_diff(self, doc=None, *, where=None):
        where = where or os.getcwd()
        logger.debug("prepare (where=%s)", where)
        self._prepare(doc)

        yield self

        resolvers = set(item.resolver for item in self.item_map.values())
        logger.info("migrate dry run and diff")
        for r in resolvers:
            filename = os.path.relpath(r.name, start=where)
            before = self.before_data(r.doc)
            after = self.after_data(r.doc)
            for line in diff(
                    before,
                    after,
                    fromfile=f"before:{filename}",
                    tofile=f" after:{filename}",
            ):
                print(line)
Esempio n. 8
0
def run(*, src: str) -> None:
    resolver = get_resolver(src)
    accessor = CachedItemAccessor(resolver)
    item_map = make_dict()
    scanner = Scanner(accessor, item_map, strict=True)
    scanner.scan(resolver.doc)

    resolvers = set()
    for k, item in list(item_map.items()):
        if k == "definitions/person":
            item.data["properties"] = ChainMap(make_dict(), item.data["properties"])
            item.data["properties"]["value"] = {"type": "integer"}
        if k == "definitions/name":
            item.data = ChainMap(make_dict(), item.data)
            item.resolver.assign_by_json_pointer(item.localref, item.data)
            item.data["description"] = "name of something"
        resolvers.add(item.resolver)

    for r in resolvers:
        print(os.path.relpath(r.name, start=os.getcwd()))
        for line in diff(before_data(r.doc), after_data(r.doc)):
            print(line)
Esempio n. 9
0
def run(*, src: str) -> None:
    resolver = get_resolver(src)
    accessor = CachedItemAccessor(resolver)
    item_map = make_dict()
    scanner = Scanner(accessor, item_map, strict=True)
    scanner.scan(resolver.doc)

    resolvers = set()
    for k, item in list(item_map.items()):
        if k == "definitions/person":
            item.data["properties"] = ChainMap(make_dict(),
                                               item.data["properties"])
            item.data["properties"]["value"] = {"type": "integer"}
        if k == "definitions/name":
            item.data = ChainMap(make_dict(), item.data)
            item.resolver.assign_by_json_pointer(item.localref, item.data)
            item.data["description"] = "name of something"
        resolvers.add(item.resolver)

    for r in resolvers:
        print(os.path.relpath(r.name, start=os.getcwd()))
        for line in diff(before_data(r.doc), after_data(r.doc)):
            print(line)