re-mocd


Namere-mocd JSON
Version 0.1.5 PyPI version JSON
download
home_pageNone
SummaryRapid multi-objective community detection algorithm with parallel computation and caching to efficiently handle large-scale graphs. With networkx compatibility
upload_time2025-01-07 21:51:18
maintainerNone
docs_urlNone
authorGuilherme Santos
requires_pythonNone
licenseGPL-3.0-or-later
keywords rust python community detection multi-objective optimization graph analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
  <img src="res/logo.png" alt="logo" style="width: 40%;"> 

   <strong>Rapid Enhanced Multi-objective Community Detection Algorithm</strong>

![PyPI - Implementation](https://img.shields.io/pypi/implementation/re_mocd)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/re_mocd)
![PyPI - Downloads](https://img.shields.io/pypi/dm/re_mocd)
[![PyPI - Stats](https://img.shields.io/badge/More%20Info-F58025?logo=PyPi)](https://pypistats.org/packages/re_mocd)

</div>

> [!IMPORTANT]  
> **re-mocd** is an open source Rust-based library designed to provide a simple and easy-to-use multi-objective algorithm for efficient and high-performance community detection on graphs. You can use it to make tests on your own graphs, or to make comparisons, be free ☺


---

## Installation  

### Via PyPI  

Install the library using pip:  
```bash
pip install re-mocd
```

---

## Usage  

### From `networkx.Graph()`  

Using **re-mocd** with a `networkx.Graph()` is simple. For example:  
```python
import networkx as nx 
import re_mocd

# Create a graph
G = nx.Graph([
    (0, 1), (0, 3), (0, 7), 
    (1, 2), (1, 3), (1, 5), 
    (2, 3), 
    (3, 6), 
    (4, 5), (4, 6), 
    (5, 6), 
    (7, 8)
])

# Random networks help validate the detection of overlapping communities 
# by serving as a baseline for comparison. These structures appear as significant 
# deviations from the expected behavior in unorganized networks, allowing the method
#  to highlight more complex patterns, such as overlapping communities. 
# However, generating random networks and their Pareto fronts increases the runtime. 
# Higher values ​​are recommended for large numbers of overlapping communities
random_networks = 3

# The main function that will perform the search for communities in the graph. 
# If you want a fast search, keep the number of random networks low.
partition = re_mocd.rmocd(G, random_networks)

# You can see its fitness function using the function below. 
# (check section "Fitness Function" to see how it is calculated).
mod = re_mocd.modularity(G, partition)
```

### Examples  

- [Plotting Example](tests/python/example.py)  
- [Comparison with Other Algorithms](tests/python/main.py)  
- [Modularity ring problem](tests/python/benchmarks/ring.py)
- [Single file test](tests/python/benchmarks/single.py)

---

<center>  
<img src="res/example.png" alt="Example Plot" width="600">  
</center>  

---

## Running from Scratch  

### Build and Run  

1. Clone the repository:  
   ```bash
   git clone https://github.com/0l1ve1r4/re_mocd
   cd re_mocd
   ```

2. Rename main (it is like this to avoid unused warnings):
   ```bash
   mv cli.rs main.rs
   ```

3. Compile and execute the algorithm:  
   ```bash
   cargo run --release mygraph.edgelist
   ```

### Debug Mode  

Use the `-d` flag for additional debug output:  
```bash
cargo run --release mygraph.edgelist -d
```

---

### Fitness Function

1. **Intra Objective:** Maximize the density of connections within communities:

   $$\text{intra}(C) = 1 - \frac{\sum_{c \in C} |E(c)|}{m}$$

2. **Inter Objective:** Minimize the strength of connections between communities:

   $$\text{inter}(C) = \sum_{c \in C} \left( \frac{\sum_{v \in c} \text{deg}(v)}{2m} \right)^2$$

3. **Modularity Function:** Combines both:

   $$Q(C) = 1 - \text{intra}(C) - \text{inter}(C)$$


These two conflicting objectives balance the density of internal connections and the sparsity of external connections. They are optimized simultaneously.


### Contributing  

Contributions are welcome! Feel free to submit issues, feature requests, or pull requests to improve the project.  

**License:** GPL-3.0 or later  
**Author:** [Guilherme Santos](https://github.com/0l1ve1r4)  

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "re-mocd",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "rust, python, community detection, multi-objective optimization, graph analysis",
    "author": "Guilherme Santos",
    "author_email": "Guilherme Santos <gs.oliveira.dev@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/61/c1/ba46817284d53ba672cb64547692837147e6096235543ac6086ca2092ce5/re_mocd-0.1.5.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n  <img src=\"res/logo.png\" alt=\"logo\" style=\"width: 40%;\"> \n\n   <strong>Rapid Enhanced Multi-objective Community Detection Algorithm</strong>\n\n![PyPI - Implementation](https://img.shields.io/pypi/implementation/re_mocd)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/re_mocd)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/re_mocd)\n[![PyPI - Stats](https://img.shields.io/badge/More%20Info-F58025?logo=PyPi)](https://pypistats.org/packages/re_mocd)\n\n</div>\n\n> [!IMPORTANT]  \n> **re-mocd** is an open source Rust-based library designed to provide a simple and easy-to-use multi-objective algorithm for efficient and high-performance community detection on graphs. You can use it to make tests on your own graphs, or to make comparisons, be free \u263a\n\n\n---\n\n## Installation  \n\n### Via PyPI  \n\nInstall the library using pip:  \n```bash\npip install re-mocd\n```\n\n---\n\n## Usage  \n\n### From `networkx.Graph()`  \n\nUsing **re-mocd** with a `networkx.Graph()` is simple. For example:  \n```python\nimport networkx as nx \nimport re_mocd\n\n# Create a graph\nG = nx.Graph([\n    (0, 1), (0, 3), (0, 7), \n    (1, 2), (1, 3), (1, 5), \n    (2, 3), \n    (3, 6), \n    (4, 5), (4, 6), \n    (5, 6), \n    (7, 8)\n])\n\n# Random networks help validate the detection of overlapping communities \n# by serving as a baseline for comparison. These structures appear as significant \n# deviations from the expected behavior in unorganized networks, allowing the method\n#  to highlight more complex patterns, such as overlapping communities. \n# However, generating random networks and their Pareto fronts increases the runtime. \n# Higher values \u200b\u200bare recommended for large numbers of overlapping communities\nrandom_networks = 3\n\n# The main function that will perform the search for communities in the graph. \n# If you want a fast search, keep the number of random networks low.\npartition = re_mocd.rmocd(G, random_networks)\n\n# You can see its fitness function using the function below. \n# (check section \"Fitness Function\" to see how it is calculated).\nmod = re_mocd.modularity(G, partition)\n```\n\n### Examples  \n\n- [Plotting Example](tests/python/example.py)  \n- [Comparison with Other Algorithms](tests/python/main.py)  \n- [Modularity ring problem](tests/python/benchmarks/ring.py)\n- [Single file test](tests/python/benchmarks/single.py)\n\n---\n\n<center>  \n<img src=\"res/example.png\" alt=\"Example Plot\" width=\"600\">  \n</center>  \n\n---\n\n## Running from Scratch  \n\n### Build and Run  \n\n1. Clone the repository:  \n   ```bash\n   git clone https://github.com/0l1ve1r4/re_mocd\n   cd re_mocd\n   ```\n\n2. Rename main (it is like this to avoid unused warnings):\n   ```bash\n   mv cli.rs main.rs\n   ```\n\n3. Compile and execute the algorithm:  \n   ```bash\n   cargo run --release mygraph.edgelist\n   ```\n\n### Debug Mode  \n\nUse the `-d` flag for additional debug output:  \n```bash\ncargo run --release mygraph.edgelist -d\n```\n\n---\n\n### Fitness Function\n\n1. **Intra Objective:** Maximize the density of connections within communities:\n\n   $$\\text{intra}(C) = 1 - \\frac{\\sum_{c \\in C} |E(c)|}{m}$$\n\n2. **Inter Objective:** Minimize the strength of connections between communities:\n\n   $$\\text{inter}(C) = \\sum_{c \\in C} \\left( \\frac{\\sum_{v \\in c} \\text{deg}(v)}{2m} \\right)^2$$\n\n3. **Modularity Function:** Combines both:\n\n   $$Q(C) = 1 - \\text{intra}(C) - \\text{inter}(C)$$\n\n\nThese two conflicting objectives balance the density of internal connections and the sparsity of external connections. They are optimized simultaneously.\n\n\n### Contributing  \n\nContributions are welcome! Feel free to submit issues, feature requests, or pull requests to improve the project.  \n\n**License:** GPL-3.0 or later  \n**Author:** [Guilherme Santos](https://github.com/0l1ve1r4)  \n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "Rapid multi-objective community detection algorithm with parallel computation and caching to efficiently handle large-scale graphs. With networkx compatibility",
    "version": "0.1.5",
    "project_urls": {
        "Issues": "https://github.com/0l1ve1r4/re_mocd/issues",
        "Repository": "https://github.com/0l1ve1r4/re_mocd"
    },
    "split_keywords": [
        "rust",
        " python",
        " community detection",
        " multi-objective optimization",
        " graph analysis"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b2fe2d19583d2f68eca2370dd5bb6c392e30674d30d52a5757935452c98e59eb",
                "md5": "19cbc3af8a423bd8635de4fd702b41b9",
                "sha256": "dbc06f47758474e3b86bab1262a6559ca72f002f206a8aa57a0894b771a82f1e"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "19cbc3af8a423bd8635de4fd702b41b9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 342033,
            "upload_time": "2025-01-07T21:50:42",
            "upload_time_iso_8601": "2025-01-07T21:50:42.714028Z",
            "url": "https://files.pythonhosted.org/packages/b2/fe/2d19583d2f68eca2370dd5bb6c392e30674d30d52a5757935452c98e59eb/re_mocd-0.1.5-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8fa7d9845fbcccdc389a8bca945ce9ffb4b0b2e2c890d4162df55123f57865d2",
                "md5": "e4df4b4f7f9f40775e508b3cf59f87c5",
                "sha256": "b1682353d371086d59da89627babc73c7aa5a48bd5f2ae10e08269b38f5bbb85"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp310-cp310-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e4df4b4f7f9f40775e508b3cf59f87c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 388519,
            "upload_time": "2025-01-07T21:50:45",
            "upload_time_iso_8601": "2025-01-07T21:50:45.095892Z",
            "url": "https://files.pythonhosted.org/packages/8f/a7/d9845fbcccdc389a8bca945ce9ffb4b0b2e2c890d4162df55123f57865d2/re_mocd-0.1.5-cp310-cp310-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "76990f194431e0430bdafe5596bb92b1f4c9e0593d457a73972ae562999b0cbb",
                "md5": "debdfb7b1e5531ae395b931e12167380",
                "sha256": "38591741d7f68971887efdf5132b4c480ff579d0fb9172a9e7cc8bae77c7fff4"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "debdfb7b1e5531ae395b931e12167380",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 293313,
            "upload_time": "2025-01-07T21:50:46",
            "upload_time_iso_8601": "2025-01-07T21:50:46.897423Z",
            "url": "https://files.pythonhosted.org/packages/76/99/0f194431e0430bdafe5596bb92b1f4c9e0593d457a73972ae562999b0cbb/re_mocd-0.1.5-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dfd496471a3bf5fb0e6ce5438cd6f01ab1f7dba4ea5830fc89181dd1474e053e",
                "md5": "1a2bf1bbabb23b84f40b5748fdbda9fc",
                "sha256": "81be7fed99155896c994d2565f86d87972d24d199f8903d571603f8db7d74834"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1a2bf1bbabb23b84f40b5748fdbda9fc",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 342040,
            "upload_time": "2025-01-07T21:50:49",
            "upload_time_iso_8601": "2025-01-07T21:50:49.695720Z",
            "url": "https://files.pythonhosted.org/packages/df/d4/96471a3bf5fb0e6ce5438cd6f01ab1f7dba4ea5830fc89181dd1474e053e/re_mocd-0.1.5-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97c281a6a93797a0a0808b9cb1749a2033802308a37695da397412394ee54ec8",
                "md5": "4a012fdf06a480e962c45105285e6426",
                "sha256": "ac9c254dadef072634a0f82993134909a1c317c4410d753ea8c502b4aa976891"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4a012fdf06a480e962c45105285e6426",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 388379,
            "upload_time": "2025-01-07T21:50:51",
            "upload_time_iso_8601": "2025-01-07T21:50:51.153547Z",
            "url": "https://files.pythonhosted.org/packages/97/c2/81a6a93797a0a0808b9cb1749a2033802308a37695da397412394ee54ec8/re_mocd-0.1.5-cp311-cp311-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "28b7ed4b334181220f55adf56414cacdee2e5eb784afe67f8ed3d0b51a18fe17",
                "md5": "30289791256098ee597105839859b55f",
                "sha256": "e2777570b8fe7327ac3506ace827f0ac9de1cf6af48081667ffc21205b9369b6"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "30289791256098ee597105839859b55f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 293322,
            "upload_time": "2025-01-07T21:50:52",
            "upload_time_iso_8601": "2025-01-07T21:50:52.658341Z",
            "url": "https://files.pythonhosted.org/packages/28/b7/ed4b334181220f55adf56414cacdee2e5eb784afe67f8ed3d0b51a18fe17/re_mocd-0.1.5-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3629afe66e82b260eb331303179dc0978558a3d56582896144383c49f45634d0",
                "md5": "30a44b87ca4128f22feaa64fdd56e6fb",
                "sha256": "e4ffd7cdda88b2bd653039e4379b101ea0b55c605b5609eec14c772aec8b7fad"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "30a44b87ca4128f22feaa64fdd56e6fb",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 340308,
            "upload_time": "2025-01-07T21:50:55",
            "upload_time_iso_8601": "2025-01-07T21:50:55.333954Z",
            "url": "https://files.pythonhosted.org/packages/36/29/afe66e82b260eb331303179dc0978558a3d56582896144383c49f45634d0/re_mocd-0.1.5-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d53b67418d49f766ac53add0287c1e968db4be9f83dafb0fe9fd57e98ca84e7",
                "md5": "55086d6f0306edb79cc3efd382401c74",
                "sha256": "1cabf0a653f1ec8dc5540eb1cbca6ba95e703249ade39639308531379fa59fdf"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "55086d6f0306edb79cc3efd382401c74",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 387853,
            "upload_time": "2025-01-07T21:50:56",
            "upload_time_iso_8601": "2025-01-07T21:50:56.437586Z",
            "url": "https://files.pythonhosted.org/packages/6d/53/b67418d49f766ac53add0287c1e968db4be9f83dafb0fe9fd57e98ca84e7/re_mocd-0.1.5-cp312-cp312-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4632ef66fc5cff7c83ed2093403e8bbd89c1f641bedd58e479813e8cd63172ed",
                "md5": "3782c04a490d26d27249261ec3659c50",
                "sha256": "3f89bd27a97303871c4c36aa48ec21dddba6c81dd09362eab3b05d8b9263373c"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3782c04a490d26d27249261ec3659c50",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 293114,
            "upload_time": "2025-01-07T21:50:58",
            "upload_time_iso_8601": "2025-01-07T21:50:58.911071Z",
            "url": "https://files.pythonhosted.org/packages/46/32/ef66fc5cff7c83ed2093403e8bbd89c1f641bedd58e479813e8cd63172ed/re_mocd-0.1.5-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1c10d62a386eac2197479048b36c3a178929d935924f371b9d9c92c27970abb6",
                "md5": "92b90bd2c46cf447b76c3e0d309a9ff0",
                "sha256": "f89c4a6f5ad6692e8f8c040771ff28af8cc9d27cd2fc29d046c952043dcc2b12"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "92b90bd2c46cf447b76c3e0d309a9ff0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 341912,
            "upload_time": "2025-01-07T21:51:01",
            "upload_time_iso_8601": "2025-01-07T21:51:01.377052Z",
            "url": "https://files.pythonhosted.org/packages/1c/10/d62a386eac2197479048b36c3a178929d935924f371b9d9c92c27970abb6/re_mocd-0.1.5-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d68ff0030534b4a707ac6b0422c737cba7c80f40466dae9f41a46479ca283980",
                "md5": "5ed52aaefb5c8aa1fc3249bca793319c",
                "sha256": "2d64a153a5e785a5a2090e6ab1d9366e69a440ee145952048792a3427f3a3554"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp38-cp38-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5ed52aaefb5c8aa1fc3249bca793319c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 388653,
            "upload_time": "2025-01-07T21:51:03",
            "upload_time_iso_8601": "2025-01-07T21:51:03.312086Z",
            "url": "https://files.pythonhosted.org/packages/d6/8f/f0030534b4a707ac6b0422c737cba7c80f40466dae9f41a46479ca283980/re_mocd-0.1.5-cp38-cp38-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e205bf793195ffabb5b199d8ee5bdfbe7b3c4f1ba8b815a39ac2501e6f334afd",
                "md5": "16a10a9d031638527bd8fad85092336e",
                "sha256": "8164b6719c7a30d1d03fe04fa428772d904c9dfe6f9be5bdcd1b1d3e813e7ac3"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "16a10a9d031638527bd8fad85092336e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 293551,
            "upload_time": "2025-01-07T21:51:05",
            "upload_time_iso_8601": "2025-01-07T21:51:05.926092Z",
            "url": "https://files.pythonhosted.org/packages/e2/05/bf793195ffabb5b199d8ee5bdfbe7b3c4f1ba8b815a39ac2501e6f334afd/re_mocd-0.1.5-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "08df616a7b6ec4314d44a0ba1bb5707c21127a9723bd6dbb718671182a1b21fc",
                "md5": "1f2718b706c41e5d0037edeec047ee74",
                "sha256": "73f188a71b1d624f87be7bff77a8966314b2fe5d09a9f8546de6b4bdc8aa53a1"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1f2718b706c41e5d0037edeec047ee74",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 341953,
            "upload_time": "2025-01-07T21:51:11",
            "upload_time_iso_8601": "2025-01-07T21:51:11.004590Z",
            "url": "https://files.pythonhosted.org/packages/08/df/616a7b6ec4314d44a0ba1bb5707c21127a9723bd6dbb718671182a1b21fc/re_mocd-0.1.5-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db9e3490ce175fbad45dbc605b60b69b8d3802c8baab0cb95c2cf9ca200aa44c",
                "md5": "b794ae27e7cf3422ebfce1836c6986f7",
                "sha256": "9009e343d9967173d0a4745f1492d5f751d7a2f84681e1cfccbf91a24bee33d1"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp39-cp39-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b794ae27e7cf3422ebfce1836c6986f7",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 388846,
            "upload_time": "2025-01-07T21:51:13",
            "upload_time_iso_8601": "2025-01-07T21:51:13.927640Z",
            "url": "https://files.pythonhosted.org/packages/db/9e/3490ce175fbad45dbc605b60b69b8d3802c8baab0cb95c2cf9ca200aa44c/re_mocd-0.1.5-cp39-cp39-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ad23a2d7a4745518046d89aeca850969e2655d845faaadb470b37a1207b027e3",
                "md5": "1447ddb0052de0dc1f4b24452688695c",
                "sha256": "da90aa6ed0da33100b1770c9a1d28bba4c8bafd00e5c4ac52f619824850b5232"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1447ddb0052de0dc1f4b24452688695c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 293694,
            "upload_time": "2025-01-07T21:51:17",
            "upload_time_iso_8601": "2025-01-07T21:51:17.738604Z",
            "url": "https://files.pythonhosted.org/packages/ad/23/a2d7a4745518046d89aeca850969e2655d845faaadb470b37a1207b027e3/re_mocd-0.1.5-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61c1ba46817284d53ba672cb64547692837147e6096235543ac6086ca2092ce5",
                "md5": "870aa10be45fb265aafc7fee02df00fb",
                "sha256": "326c7bb42befab9fe29a28ce828f4b238278ddc0d03a74664c9dd79b12dda9af"
            },
            "downloads": -1,
            "filename": "re_mocd-0.1.5.tar.gz",
            "has_sig": false,
            "md5_digest": "870aa10be45fb265aafc7fee02df00fb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 254459,
            "upload_time": "2025-01-07T21:51:18",
            "upload_time_iso_8601": "2025-01-07T21:51:18.891335Z",
            "url": "https://files.pythonhosted.org/packages/61/c1/ba46817284d53ba672cb64547692837147e6096235543ac6086ca2092ce5/re_mocd-0.1.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-07 21:51:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "0l1ve1r4",
    "github_project": "re_mocd",
    "github_not_found": true,
    "lcname": "re-mocd"
}
        
Elapsed time: 0.38442s