mongo-diff


Namemongo-diff JSON
Version 0.1.6 PyPI version JSON
download
home_pagehttps://github.com/eecavanna/mongo-diff
SummaryCompare MongoDB collections from the command line.
upload_time2024-02-10 03:09:01
maintainer
docs_urlNone
author
requires_python>=3.10,<4.0
license
keywords mongodb mongo diff compare collection database data
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mongo-diff

`mongo-diff` is a command-line tool people can use to compare two MongoDB collections.

Those collections can reside in either a single database or two separate databases (even across servers).

```mermaid
%% This is the source code of a Mermaid diagram, which GitHub will render as a diagram.
%% Note: PyPI does not render Mermaid diagrams, and instead displays their source code.
%%       Reference: https://github.com/pypi/warehouse/issues/13083
graph LR
    script[["mongo_diff.py"]]
    result["List of<br>differences"]

    subgraph s1 \[Server]
        subgraph d1 \[Database]
            collection_a[("Collection A")]
        end
    end

    subgraph s2 \[Server]
        subgraph d2 \[Database]
            collection_b[("Collection B")]
        end
    end

    collection_a --> script
    collection_b --> script
    script --> result
```

## Usage

### Installation

Assuming you have `pipx` installed, you can install the tool by running the following command:

```shell
pipx install mongo-diff
```

> [`pipx`](https://pipx.pypa.io/stable/) is a tool people can use to
> [download and install](https://pipx.pypa.io/stable/#where-does-pipx-install-apps-from)
> Python scripts that are hosted on PyPI.
> You can [install `pipx`](https://pipx.pypa.io/stable/installation/) by running `$ python -m pip install pipx`.

### Running

You can display the tool's `--help` snippet by running:

```shell
mongo-diff --help
```

At the time of this writing, the tool's `--help` snippet is:

```console
 Usage: mongo-diff [OPTIONS]

 Compare two MongoDB collections.
 Those collections can reside in either a single database or two separate
 databases (even across servers).

╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --include-id    --no-include-id      Includes the `_id` field when comparing │
│                                      documents.                              │
│                                      [default: no-include-id]                │
│ --help                               Show this message and exit.             │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Collection A ───────────────────────────────────────────────────────────────╮
│ *  --mongo-uri-a                    TEXT  Connection string for accessing    │
│                                           the MongoDB server containing      │
│                                           collection A.                      │
│                                           [env var: MONGO_URI_A]             │
│                                           [required]                         │
│ *  --database-name-a                TEXT  Name of the database containing    │
│                                           collection A.                      │
│                                           [required]                         │
│ *  --collection-name-a              TEXT  Name of collection A. [required]   │
│    --identifier-field-name-a        TEXT  Name of the field of each document │
│                                           in collection A to use to identify │
│                                           a corresponding document in        │
│                                           collection B.                      │
│                                           [default: id]                      │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Collection B ───────────────────────────────────────────────────────────────╮
│ --mongo-uri-b                    TEXT  Connection string for accessing the   │
│                                        MongoDB server containing collection  │
│                                        B (if different from that specified   │
│                                        for collection A).                    │
│                                        [env var: MONGO_URI_B]                │
│ --database-name-b                TEXT  Name of the database containing       │
│                                        collection B (if different from that  │
│                                        specified for collection A).          │
│ --collection-name-b              TEXT  Name of collection B (if different    │
│                                        from that specified for collection    │
│                                        A).                                   │
│ --identifier-field-name-b        TEXT  Name of the field of each document in │
│                                        collection B to use to identify a     │
│                                        corresponding document in collection  │
│                                        A (if different from that specified   │
│                                        for collection A).                    │
╰──────────────────────────────────────────────────────────────────────────────╯
```

> Note: The above snippet was captured from a terminal window whose width was 80 pixels.

#### MongoDB connection strings

As documented in the `--help` snippet above, you can provide the MongoDB connection strings to the tool via either (a)
command-line options; or (b) environment variables named `MONGO_URI_A` and `MONGO_URI_B`. The latter can come in handy
for MongoDB connection strings that contain passwords.

Here's how you could create those environment variables:

```shell  
export MONGO_URI_A='mongodb://localhost:27017'
export MONGO_URI_B='mongodb://username:password@host.example.com:22222'
```

> Note: That will only create those environment variables in the current shell process. You can persist them by adding
> those same commands to your shell initialization script (e.g. `~/.bashrc`, `~/.zshrc`).

#### Example output

As the tool compares the collections, it will display the **differences** it detects; like this:

```console
Documents differ between collections: id=1,id=1. Differences: [('change', 'name', ('Joe', 'Joseph'))]
Document exists in collection A only: id=2
Document exists in collection A only: id=4
Document exists in collection B only: id=5
```

When the tool finishes comparing the collections, it will display a **summary** of the result; like this:

```console
                         Result                         
╭───────────────────────────────────────────┬──────────╮
│ Description                               │ Quantity │
├───────────────────────────────────────────┼──────────┤
│ Documents in collection A                 │        4 │
│ Documents in collection B                 │        3 │
├───────────────────────────────────────────┼──────────┤
│ Documents in collection A only            │        2 │
│ Documents in collection B only            │        1 │
├───────────────────────────────────────────┼──────────┤
│ Documents that differ between collections │        1 │
╰───────────────────────────────────────────┴──────────╯
```

### Updating

You can update the tool to [the latest version available on PyPI](https://pypi.org/project/mongo-diff/) by running:

```shell
pipx upgrade mongo-diff
```

### Uninstallation

You can uninstall the tool from your computer by running:

```shell
pipx uninstall mongo-diff
```

## Development

We use [Poetry](https://python-poetry.org/) to both (a) manage dependencies and (b) publish packages to PyPI.

- `pyproject.toml`: Configuration file for Poetry and other tools (was generated via `$ poetry init`)
- `poetry.lock`: List of dependencies, direct and indirect (was generated via `$ poetry update`)

### Clone repository

```shell
git clone https://github.com/eecavanna/mongo-diff.git
cd mongo-diff
```

### Create virtual environment

Create a Poetry virtual environment and attach to its shell:

```shell
poetry shell
```

> You can see information about the Poetry virtual environment by running: `$ poetry env info`

> You can detach from the Poetry virtual environment's shell by running: `$ exit`

From now on, I'll refer to the Poetry virtual environment's shell as the "Poetry shell."

### Install dependencies

At the Poetry shell, install the project's dependencies:

```shell
poetry install
```

### Make changes

Edit the tool's source code and documentation however you want.

While editing the tool's source code, you can run the tool as you normally would in order to test things out.

```shell
mongo-diff --help
```

### Build package

#### Update package version

PyPI [doesn't allow](https://pypi.org/help/#file-name-reuse) people to publish the same "version" of a package multiple
times.

You can update the version identifier of the package by running:

```shell
poetry version {version_or_keyword}
```

> You can replace `{version_or_keyword}` with either a literal version identifier (e.g. `0.1.1`) or a keyword
> (e.g. `major`, `minor`, or `patch`). You can run `$ poetry version --help` to see the valid keywords.

Alternatively, you can manually edit a line in `pyproject.toml`:

```diff
- version = "0.1.0"
+ version = "0.1.1"
```

#### Build package

At the Poetry shell, build the package based upon the latest source code:

```shell
poetry build
```

> That will create both a
> [source distribution](https://setuptools.pypa.io/en/latest/deprecated/distutils/sourcedist.html#creating-a-source-distribution)
> file (whose name ends with `.tar.gz`) and a
> [wheel](https://packaging.python.org/en/latest/specifications/binary-distribution-format/#binary-distribution-format)
> file (whose name ends with `.whl`) in the `dist` directory.

### Publish package

#### Set up PyPI credentials

At the Poetry shell, create the following
[environment variable](https://python-poetry.org/docs/repositories/#configuring-credentials),
which Poetry will check for if credentials aren't specified to it in another way.

```shell
export POETRY_PYPI_TOKEN_PYPI="{api_token}"
```

> Replace `{api_token}` with a [PyPI API token](https://pypi.org/help/#apitoken) whose scope includes
> the PyPI project to which you want to publish the package.

#### Publish package to PyPI

At the Poetry shell, publish the newly-built package to PyPI:

```shell
poetry publish
```

At this point, people will be able to download and install the package from
[PyPI](https://pypi.org/project/mongo-diff/).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/eecavanna/mongo-diff",
    "name": "mongo-diff",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4.0",
    "maintainer_email": "",
    "keywords": "mongodb,mongo,diff,compare,collection,database,data",
    "author": "",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/1a/f6/273fd2f8aa82ec84f7d0186b2faaebc1b76890d66b98bc91cec0b1f17fc0/mongo_diff-0.1.6.tar.gz",
    "platform": null,
    "description": "# mongo-diff\n\n`mongo-diff` is a command-line tool people can use to compare two MongoDB collections.\n\nThose collections can reside in either a single database or two separate databases (even across servers).\n\n```mermaid\n%% This is the source code of a Mermaid diagram, which GitHub will render as a diagram.\n%% Note: PyPI does not render Mermaid diagrams, and instead displays their source code.\n%%       Reference: https://github.com/pypi/warehouse/issues/13083\ngraph LR\n    script[[\"mongo_diff.py\"]]\n    result[\"List of<br>differences\"]\n\n    subgraph s1 \\[Server]\n        subgraph d1 \\[Database]\n            collection_a[(\"Collection A\")]\n        end\n    end\n\n    subgraph s2 \\[Server]\n        subgraph d2 \\[Database]\n            collection_b[(\"Collection B\")]\n        end\n    end\n\n    collection_a --> script\n    collection_b --> script\n    script --> result\n```\n\n## Usage\n\n### Installation\n\nAssuming you have `pipx` installed, you can install the tool by running the following command:\n\n```shell\npipx install mongo-diff\n```\n\n> [`pipx`](https://pipx.pypa.io/stable/) is a tool people can use to\n> [download and install](https://pipx.pypa.io/stable/#where-does-pipx-install-apps-from)\n> Python scripts that are hosted on PyPI.\n> You can [install `pipx`](https://pipx.pypa.io/stable/installation/) by running `$ python -m pip install pipx`.\n\n### Running\n\nYou can display the tool's `--help` snippet by running:\n\n```shell\nmongo-diff --help\n```\n\nAt the time of this writing, the tool's `--help` snippet is:\n\n```console\n Usage: mongo-diff [OPTIONS]\n\n Compare two MongoDB collections.\n Those collections can reside in either a single database or two separate\n databases (even across servers).\n\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --include-id    --no-include-id      Includes the `_id` field when comparing \u2502\n\u2502                                      documents.                              \u2502\n\u2502                                      [default: no-include-id]                \u2502\n\u2502 --help                               Show this message and exit.             \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Collection A \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *  --mongo-uri-a                    TEXT  Connection string for accessing    \u2502\n\u2502                                           the MongoDB server containing      \u2502\n\u2502                                           collection A.                      \u2502\n\u2502                                           [env var: MONGO_URI_A]             \u2502\n\u2502                                           [required]                         \u2502\n\u2502 *  --database-name-a                TEXT  Name of the database containing    \u2502\n\u2502                                           collection A.                      \u2502\n\u2502                                           [required]                         \u2502\n\u2502 *  --collection-name-a              TEXT  Name of collection A. [required]   \u2502\n\u2502    --identifier-field-name-a        TEXT  Name of the field of each document \u2502\n\u2502                                           in collection A to use to identify \u2502\n\u2502                                           a corresponding document in        \u2502\n\u2502                                           collection B.                      \u2502\n\u2502                                           [default: id]                      \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Collection B \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --mongo-uri-b                    TEXT  Connection string for accessing the   \u2502\n\u2502                                        MongoDB server containing collection  \u2502\n\u2502                                        B (if different from that specified   \u2502\n\u2502                                        for collection A).                    \u2502\n\u2502                                        [env var: MONGO_URI_B]                \u2502\n\u2502 --database-name-b                TEXT  Name of the database containing       \u2502\n\u2502                                        collection B (if different from that  \u2502\n\u2502                                        specified for collection A).          \u2502\n\u2502 --collection-name-b              TEXT  Name of collection B (if different    \u2502\n\u2502                                        from that specified for collection    \u2502\n\u2502                                        A).                                   \u2502\n\u2502 --identifier-field-name-b        TEXT  Name of the field of each document in \u2502\n\u2502                                        collection B to use to identify a     \u2502\n\u2502                                        corresponding document in collection  \u2502\n\u2502                                        A (if different from that specified   \u2502\n\u2502                                        for collection A).                    \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n> Note: The above snippet was captured from a terminal window whose width was 80 pixels.\n\n#### MongoDB connection strings\n\nAs documented in the `--help` snippet above, you can provide the MongoDB connection strings to the tool via either (a)\ncommand-line options; or (b) environment variables named `MONGO_URI_A` and `MONGO_URI_B`. The latter can come in handy\nfor MongoDB connection strings that contain passwords.\n\nHere's how you could create those environment variables:\n\n```shell  \nexport MONGO_URI_A='mongodb://localhost:27017'\nexport MONGO_URI_B='mongodb://username:password@host.example.com:22222'\n```\n\n> Note: That will only create those environment variables in the current shell process. You can persist them by adding\n> those same commands to your shell initialization script (e.g. `~/.bashrc`, `~/.zshrc`).\n\n#### Example output\n\nAs the tool compares the collections, it will display the **differences** it detects; like this:\n\n```console\nDocuments differ between collections: id=1,id=1. Differences: [('change', 'name', ('Joe', 'Joseph'))]\nDocument exists in collection A only: id=2\nDocument exists in collection A only: id=4\nDocument exists in collection B only: id=5\n```\n\nWhen the tool finishes comparing the collections, it will display a **summary** of the result; like this:\n\n```console\n                         Result                         \n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Description                               \u2502 Quantity \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Documents in collection A                 \u2502        4 \u2502\n\u2502 Documents in collection B                 \u2502        3 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Documents in collection A only            \u2502        2 \u2502\n\u2502 Documents in collection B only            \u2502        1 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Documents that differ between collections \u2502        1 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n### Updating\n\nYou can update the tool to [the latest version available on PyPI](https://pypi.org/project/mongo-diff/) by running:\n\n```shell\npipx upgrade mongo-diff\n```\n\n### Uninstallation\n\nYou can uninstall the tool from your computer by running:\n\n```shell\npipx uninstall mongo-diff\n```\n\n## Development\n\nWe use [Poetry](https://python-poetry.org/) to both (a) manage dependencies and (b) publish packages to PyPI.\n\n- `pyproject.toml`: Configuration file for Poetry and other tools (was generated via `$ poetry init`)\n- `poetry.lock`: List of dependencies, direct and indirect (was generated via `$ poetry update`)\n\n### Clone repository\n\n```shell\ngit clone https://github.com/eecavanna/mongo-diff.git\ncd mongo-diff\n```\n\n### Create virtual environment\n\nCreate a Poetry virtual environment and attach to its shell:\n\n```shell\npoetry shell\n```\n\n> You can see information about the Poetry virtual environment by running: `$ poetry env info`\n\n> You can detach from the Poetry virtual environment's shell by running: `$ exit`\n\nFrom now on, I'll refer to the Poetry virtual environment's shell as the \"Poetry shell.\"\n\n### Install dependencies\n\nAt the Poetry shell, install the project's dependencies:\n\n```shell\npoetry install\n```\n\n### Make changes\n\nEdit the tool's source code and documentation however you want.\n\nWhile editing the tool's source code, you can run the tool as you normally would in order to test things out.\n\n```shell\nmongo-diff --help\n```\n\n### Build package\n\n#### Update package version\n\nPyPI [doesn't allow](https://pypi.org/help/#file-name-reuse) people to publish the same \"version\" of a package multiple\ntimes.\n\nYou can update the version identifier of the package by running:\n\n```shell\npoetry version {version_or_keyword}\n```\n\n> You can replace `{version_or_keyword}` with either a literal version identifier (e.g. `0.1.1`) or a keyword\n> (e.g. `major`, `minor`, or `patch`). You can run `$ poetry version --help` to see the valid keywords.\n\nAlternatively, you can manually edit a line in `pyproject.toml`:\n\n```diff\n- version = \"0.1.0\"\n+ version = \"0.1.1\"\n```\n\n#### Build package\n\nAt the Poetry shell, build the package based upon the latest source code:\n\n```shell\npoetry build\n```\n\n> That will create both a\n> [source distribution](https://setuptools.pypa.io/en/latest/deprecated/distutils/sourcedist.html#creating-a-source-distribution)\n> file (whose name ends with `.tar.gz`) and a\n> [wheel](https://packaging.python.org/en/latest/specifications/binary-distribution-format/#binary-distribution-format)\n> file (whose name ends with `.whl`) in the `dist` directory.\n\n### Publish package\n\n#### Set up PyPI credentials\n\nAt the Poetry shell, create the following\n[environment variable](https://python-poetry.org/docs/repositories/#configuring-credentials),\nwhich Poetry will check for if credentials aren't specified to it in another way.\n\n```shell\nexport POETRY_PYPI_TOKEN_PYPI=\"{api_token}\"\n```\n\n> Replace `{api_token}` with a [PyPI API token](https://pypi.org/help/#apitoken) whose scope includes\n> the PyPI project to which you want to publish the package.\n\n#### Publish package to PyPI\n\nAt the Poetry shell, publish the newly-built package to PyPI:\n\n```shell\npoetry publish\n```\n\nAt this point, people will be able to download and install the package from\n[PyPI](https://pypi.org/project/mongo-diff/).\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Compare MongoDB collections from the command line.",
    "version": "0.1.6",
    "project_urls": {
        "Documentation": "https://github.com/eecavanna/mongo-diff",
        "Homepage": "https://github.com/eecavanna/mongo-diff",
        "Repository": "https://github.com/eecavanna/mongo-diff"
    },
    "split_keywords": [
        "mongodb",
        "mongo",
        "diff",
        "compare",
        "collection",
        "database",
        "data"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "45640b9069fe696a30fdc9d65f0f85f9916b658a768bca6bd24ba138293848f9",
                "md5": "4047fe891384bb888ec86c2ee363ef80",
                "sha256": "2c3c019720af6ae4d5e99de8579ea3d90f47131389e6d29d7c0df4e2fb28c687"
            },
            "downloads": -1,
            "filename": "mongo_diff-0.1.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4047fe891384bb888ec86c2ee363ef80",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4.0",
            "size": 7332,
            "upload_time": "2024-02-10T03:08:59",
            "upload_time_iso_8601": "2024-02-10T03:08:59.713920Z",
            "url": "https://files.pythonhosted.org/packages/45/64/0b9069fe696a30fdc9d65f0f85f9916b658a768bca6bd24ba138293848f9/mongo_diff-0.1.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1af6273fd2f8aa82ec84f7d0186b2faaebc1b76890d66b98bc91cec0b1f17fc0",
                "md5": "b3bd7c62b611d6119817c30607c62fa6",
                "sha256": "8d5f002e392f8af22e14e9928501eda78533bacc0fb89ced65f32664ae5b4097"
            },
            "downloads": -1,
            "filename": "mongo_diff-0.1.6.tar.gz",
            "has_sig": false,
            "md5_digest": "b3bd7c62b611d6119817c30607c62fa6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4.0",
            "size": 6686,
            "upload_time": "2024-02-10T03:09:01",
            "upload_time_iso_8601": "2024-02-10T03:09:01.356724Z",
            "url": "https://files.pythonhosted.org/packages/1a/f6/273fd2f8aa82ec84f7d0186b2faaebc1b76890d66b98bc91cec0b1f17fc0/mongo_diff-0.1.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-10 03:09:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "eecavanna",
    "github_project": "mongo-diff",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "mongo-diff"
}
        
Elapsed time: 0.29088s