From 886e56f925f552ab51e7852861d9e3c527c0c7d4 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Tue, 11 Apr 2023 19:14:05 +0000 Subject: automatic import of python-csv-diff --- .gitignore | 1 + python-csv-diff.spec | 423 +++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 425 insertions(+) create mode 100644 python-csv-diff.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..fe670df 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/csv-diff-1.1.tar.gz diff --git a/python-csv-diff.spec b/python-csv-diff.spec new file mode 100644 index 0000000..a1ef05a --- /dev/null +++ b/python-csv-diff.spec @@ -0,0 +1,423 @@ +%global _empty_manifest_terminate_build 0 +Name: python-csv-diff +Version: 1.1 +Release: 1 +Summary: Python CLI tool and library for diffing CSV and JSON files +License: Apache License, Version 2.0 +URL: https://github.com/simonw/csv-diff +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/df/3e/1873856cd1cdb2b373f592e4985d5de99e485daff425c37d6916c89adb3c/csv-diff-1.1.tar.gz +BuildArch: noarch + +Requires: python3-click +Requires: python3-dictdiffer +Requires: python3-pytest + +%description +# csv-diff + +[![PyPI](https://img.shields.io/pypi/v/csv-diff.svg)](https://pypi.org/project/csv-diff/) +[![Changelog](https://img.shields.io/github/v/release/simonw/csv-diff?include_prereleases&label=changelog)](https://github.com/simonw/csv-diff/releases) +[![Tests](https://github.com/simonw/csv-diff/workflows/Test/badge.svg)](https://github.com/simonw/csv-diff/actions?query=workflow%3ATest) +[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/csv-diff/blob/main/LICENSE) + +Tool for viewing the difference between two CSV, TSV or JSON files. See [Generating a commit log for San Francisco’s official list of trees](https://simonwillison.net/2019/Mar/13/tree-history/) (and the [sf-tree-history repo commit log](https://github.com/simonw/sf-tree-history/commits)) for background information on this project. + +## Installation + + pip install csv-diff + +## Usage + +Consider two CSV files: + +`one.csv` + + id,name,age + 1,Cleo,4 + 2,Pancakes,2 + +`two.csv` + + id,name,age + 1,Cleo,5 + 3,Bailey,1 + +`csv-diff` can show a human-readable summary of differences between the files: + + $ csv-diff one.csv two.csv --key=id + 1 row changed, 1 row added, 1 row removed + + 1 row changed + + Row 1 + age: "4" => "5" + + 1 row added + + id: 3 + name: Bailey + age: 1 + + 1 row removed + + id: 2 + name: Pancakes + age: 2 + +The `--key=id` option means that the `id` column should be treated as the unique key, to identify which records have changed. + +The tool will automatically detect if your files are comma- or tab-separated. You can over-ride this automatic detection and force the tool to use a specific format using `--format=tsv` or `--format=csv`. + +You can also feed it JSON files, provided they are a JSON array of objects where each object has the same keys. Use `--format=json` if your input files are JSON. + +Use `--show-unchanged` to include full details of the unchanged values for rows with at least one change in the diff output: + + % csv-diff one.csv two.csv --key=id --show-unchanged + 1 row changed + + id: 1 + age: "4" => "5" + + Unchanged: + name: "Cleo" + +You can use the `--json` option to get a machine-readable difference: + + $ csv-diff one.csv two.csv --key=id --json + { + "added": [ + { + "id": "3", + "name": "Bailey", + "age": "1" + } + ], + "removed": [ + { + "id": "2", + "name": "Pancakes", + "age": "2" + } + ], + "changed": [ + { + "key": "1", + "changes": { + "age": [ + "4", + "5" + ] + } + } + ], + "columns_added": [], + "columns_removed": [] + } + +## As a Python library + +You can also import the Python library into your own code like so: + + from csv_diff import load_csv, compare + diff = compare( + load_csv(open("one.csv"), key="id"), + load_csv(open("two.csv"), key="id") + ) + +`diff` will now contain the same data structure as the output in the `--json` example above. + +If the columns in the CSV have changed, those added or removed columns will be ignored when calculating changes made to specific rows. + + + + +%package -n python3-csv-diff +Summary: Python CLI tool and library for diffing CSV and JSON files +Provides: python-csv-diff +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-csv-diff +# csv-diff + +[![PyPI](https://img.shields.io/pypi/v/csv-diff.svg)](https://pypi.org/project/csv-diff/) +[![Changelog](https://img.shields.io/github/v/release/simonw/csv-diff?include_prereleases&label=changelog)](https://github.com/simonw/csv-diff/releases) +[![Tests](https://github.com/simonw/csv-diff/workflows/Test/badge.svg)](https://github.com/simonw/csv-diff/actions?query=workflow%3ATest) +[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/csv-diff/blob/main/LICENSE) + +Tool for viewing the difference between two CSV, TSV or JSON files. See [Generating a commit log for San Francisco’s official list of trees](https://simonwillison.net/2019/Mar/13/tree-history/) (and the [sf-tree-history repo commit log](https://github.com/simonw/sf-tree-history/commits)) for background information on this project. + +## Installation + + pip install csv-diff + +## Usage + +Consider two CSV files: + +`one.csv` + + id,name,age + 1,Cleo,4 + 2,Pancakes,2 + +`two.csv` + + id,name,age + 1,Cleo,5 + 3,Bailey,1 + +`csv-diff` can show a human-readable summary of differences between the files: + + $ csv-diff one.csv two.csv --key=id + 1 row changed, 1 row added, 1 row removed + + 1 row changed + + Row 1 + age: "4" => "5" + + 1 row added + + id: 3 + name: Bailey + age: 1 + + 1 row removed + + id: 2 + name: Pancakes + age: 2 + +The `--key=id` option means that the `id` column should be treated as the unique key, to identify which records have changed. + +The tool will automatically detect if your files are comma- or tab-separated. You can over-ride this automatic detection and force the tool to use a specific format using `--format=tsv` or `--format=csv`. + +You can also feed it JSON files, provided they are a JSON array of objects where each object has the same keys. Use `--format=json` if your input files are JSON. + +Use `--show-unchanged` to include full details of the unchanged values for rows with at least one change in the diff output: + + % csv-diff one.csv two.csv --key=id --show-unchanged + 1 row changed + + id: 1 + age: "4" => "5" + + Unchanged: + name: "Cleo" + +You can use the `--json` option to get a machine-readable difference: + + $ csv-diff one.csv two.csv --key=id --json + { + "added": [ + { + "id": "3", + "name": "Bailey", + "age": "1" + } + ], + "removed": [ + { + "id": "2", + "name": "Pancakes", + "age": "2" + } + ], + "changed": [ + { + "key": "1", + "changes": { + "age": [ + "4", + "5" + ] + } + } + ], + "columns_added": [], + "columns_removed": [] + } + +## As a Python library + +You can also import the Python library into your own code like so: + + from csv_diff import load_csv, compare + diff = compare( + load_csv(open("one.csv"), key="id"), + load_csv(open("two.csv"), key="id") + ) + +`diff` will now contain the same data structure as the output in the `--json` example above. + +If the columns in the CSV have changed, those added or removed columns will be ignored when calculating changes made to specific rows. + + + + +%package help +Summary: Development documents and examples for csv-diff +Provides: python3-csv-diff-doc +%description help +# csv-diff + +[![PyPI](https://img.shields.io/pypi/v/csv-diff.svg)](https://pypi.org/project/csv-diff/) +[![Changelog](https://img.shields.io/github/v/release/simonw/csv-diff?include_prereleases&label=changelog)](https://github.com/simonw/csv-diff/releases) +[![Tests](https://github.com/simonw/csv-diff/workflows/Test/badge.svg)](https://github.com/simonw/csv-diff/actions?query=workflow%3ATest) +[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/csv-diff/blob/main/LICENSE) + +Tool for viewing the difference between two CSV, TSV or JSON files. See [Generating a commit log for San Francisco’s official list of trees](https://simonwillison.net/2019/Mar/13/tree-history/) (and the [sf-tree-history repo commit log](https://github.com/simonw/sf-tree-history/commits)) for background information on this project. + +## Installation + + pip install csv-diff + +## Usage + +Consider two CSV files: + +`one.csv` + + id,name,age + 1,Cleo,4 + 2,Pancakes,2 + +`two.csv` + + id,name,age + 1,Cleo,5 + 3,Bailey,1 + +`csv-diff` can show a human-readable summary of differences between the files: + + $ csv-diff one.csv two.csv --key=id + 1 row changed, 1 row added, 1 row removed + + 1 row changed + + Row 1 + age: "4" => "5" + + 1 row added + + id: 3 + name: Bailey + age: 1 + + 1 row removed + + id: 2 + name: Pancakes + age: 2 + +The `--key=id` option means that the `id` column should be treated as the unique key, to identify which records have changed. + +The tool will automatically detect if your files are comma- or tab-separated. You can over-ride this automatic detection and force the tool to use a specific format using `--format=tsv` or `--format=csv`. + +You can also feed it JSON files, provided they are a JSON array of objects where each object has the same keys. Use `--format=json` if your input files are JSON. + +Use `--show-unchanged` to include full details of the unchanged values for rows with at least one change in the diff output: + + % csv-diff one.csv two.csv --key=id --show-unchanged + 1 row changed + + id: 1 + age: "4" => "5" + + Unchanged: + name: "Cleo" + +You can use the `--json` option to get a machine-readable difference: + + $ csv-diff one.csv two.csv --key=id --json + { + "added": [ + { + "id": "3", + "name": "Bailey", + "age": "1" + } + ], + "removed": [ + { + "id": "2", + "name": "Pancakes", + "age": "2" + } + ], + "changed": [ + { + "key": "1", + "changes": { + "age": [ + "4", + "5" + ] + } + } + ], + "columns_added": [], + "columns_removed": [] + } + +## As a Python library + +You can also import the Python library into your own code like so: + + from csv_diff import load_csv, compare + diff = compare( + load_csv(open("one.csv"), key="id"), + load_csv(open("two.csv"), key="id") + ) + +`diff` will now contain the same data structure as the output in the `--json` example above. + +If the columns in the CSV have changed, those added or removed columns will be ignored when calculating changes made to specific rows. + + + + +%prep +%autosetup -n csv-diff-1.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-csv-diff -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot - 1.1-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..cc6e3e4 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +2c9cf505b45db4cb3c586c84cfef6f2e csv-diff-1.1.tar.gz -- cgit v1.2.3