{"id":21940225,"url":"https://github.com/aneeshdurg/spycy","last_synced_at":"2026-03-05T09:31:50.267Z","repository":{"id":150278450,"uuid":"621405680","full_name":"aneeshdurg/spycy","owner":"aneeshdurg","description":"a python implementation of a modular openCypher graph database, enabling queries on real-world graphs","archived":false,"fork":false,"pushed_at":"2025-01-30T21:35:22.000Z","size":24433,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-27T21:46:20.531Z","etag":null,"topics":["graphdatabase","graphdb","opencypher"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aneeshdurg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-30T15:41:07.000Z","updated_at":"2025-02-03T15:16:12.000Z","dependencies_parsed_at":"2023-12-22T18:30:18.898Z","dependency_job_id":"cb8b94a3-acb3-4caa-bde8-a12b66d757ee","html_url":"https://github.com/aneeshdurg/spycy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/aneeshdurg/spycy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aneeshdurg%2Fspycy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aneeshdurg%2Fspycy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aneeshdurg%2Fspycy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aneeshdurg%2Fspycy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aneeshdurg","download_url":"https://codeload.github.com/aneeshdurg/spycy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aneeshdurg%2Fspycy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30117683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T08:19:04.902Z","status":"ssl_error","status_checked_at":"2026-03-05T08:17:37.148Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphdatabase","graphdb","opencypher"],"created_at":"2024-11-29T02:29:51.814Z","updated_at":"2026-03-05T09:31:49.355Z","avatar_url":"https://github.com/aneeshdurg.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sPyCy\n\n![TCK CI status](https://github.com/aneeshdurg/spycy/actions/workflows/tck.yml/badge.svg)\n\nsPyCy is a python implementation of [openCypher](https://github.com/opencypher/openCypher/).\nTry it out in your browser here: [https://aneeshdurg.me/spycy](https://aneeshdurg.me/spycy)\n\nThe goal of `sPyCy` is to enable using openCypher as a frontend, or to embed\nopenCypher in other projects. To this end, `sPyCy` is quite modular and several\ncomponents such as the underlying graph implementation, the subgraph pattern\nmatcher, and the expression evaluator can all be substituted with a custom\nimplementation. See `examples/` for some sample usage, and for some examples where\nthe graph implementation is satisfied by third-party objects (e.g. HTML DOM, LLVM IR, etc)\n\nThe long-term goals of this project include fully passing all openCypher TCK\ntests. Currently a majority of TCK tests are expected to pass. The failing tests\nare documented.\n\nSome major **unimplemented** features are `MERGE`, temporal values, `WHERE`\npredicates involving patterns, existential subqueries, and `CALL`.\n\n## Installation\n\nYou can either install from [PyPI](https://pypi.org/project/spycy-aneeshdurg/) or build `sPyCy` yourself. To install the pre-built wheel, run:\n\n```bash\npip install spycy_aneeshdurg\n```\n\nTo build it yourself, from the root of this repo, run:\n\n```bash\n# Optional - create and enter a venv\n# python3 -m venv venv\n# source ./venv/bin/activate # this command varies from shell to shell\npip install .\n```\n\n## Usage:\n\n```bash\n# Example usage:\npython3 -m spycy --query \"CREATE (a {id: 'node0'})-[:X]-\u003e(b) return a\"\n\n# Or interactive mode:\npython3 -m spycy --interactive\n\u003e CREATE (a {id: 'node0'})-[:X]-\u003e(b {id: 'node1'})\n\u003e MATCH (a)--(b) RETURN a.id, b.id\n    a.id   b.id\n0  node0  node1\n```\n\n`sPcY` can also be used via python:\n```python\nfrom spycy import spycy\nexe = spycy.CypherExecutor()\nids = list(range(100))\nexe.exec(f\"UNWIND {ids} as x CREATE ({{id: x}})\")\nnum_nodes_gt_10 = exe.exec(\"MATCH (a) WHERE a.id \u003e 10 RETURN count(a) as output\")[\"output\"]\nprint(f\"There are {num_nodes_gt_10} node(s) with an id greater than 10\")\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faneeshdurg%2Fspycy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faneeshdurg%2Fspycy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faneeshdurg%2Fspycy/lists"}