{"id":34063253,"url":"https://github.com/mrclock8163/geocompy","last_synced_at":"2026-04-08T12:02:10.989Z","repository":{"id":284235038,"uuid":"953253657","full_name":"MrClock8163/GeoComPy","owner":"MrClock8163","description":"Surveying instrument automation through GeoCOM and other protocols.","archived":false,"fork":false,"pushed_at":"2025-12-18T21:36:35.000Z","size":3144,"stargazers_count":7,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-12-23T08:36:25.294Z","etag":null,"topics":["automation","geocom","gsi","leica","leica-geosystems","monitoring","surveying"],"latest_commit_sha":null,"homepage":"https://geocompy.readthedocs.io","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/MrClock8163.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-22T23:14:04.000Z","updated_at":"2025-12-18T21:33:14.000Z","dependencies_parsed_at":"2025-03-24T21:35:23.971Z","dependency_job_id":"6b3a77c7-5e1b-4a69-86c4-4e716497841c","html_url":"https://github.com/MrClock8163/GeoComPy","commit_stats":null,"previous_names":["mrclock8163/geocompy"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/MrClock8163/GeoComPy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrClock8163%2FGeoComPy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrClock8163%2FGeoComPy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrClock8163%2FGeoComPy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrClock8163%2FGeoComPy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrClock8163","download_url":"https://codeload.github.com/MrClock8163/GeoComPy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrClock8163%2FGeoComPy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31554110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"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":["automation","geocom","gsi","leica","leica-geosystems","monitoring","surveying"],"created_at":"2025-12-14T05:16:00.528Z","updated_at":"2026-04-08T12:02:10.916Z","avatar_url":"https://github.com/MrClock8163.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mrclock8163/geocompy/main/docs/geocompy_logo.png\" alt=\"GeoComPy logo\" width=\"300\"\u003e\n\u003c/h1\u003e\u003cbr\u003e\n\n[![PyPI - Version](https://img.shields.io/pypi/v/geocompy)](https://pypi.org/project/geocompy/)\n[![Python Version](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FMrClock8163%2FGeoComPy%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)](https://pypi.org/project/geocompy/)\n[![MIT](https://img.shields.io/github/license/mrclock8163/geocompy)](https://opensource.org/license/mit)\n[![Tests status](https://img.shields.io/github/actions/workflow/status/mrclock8163/geocompy/run-tests.yml?label=tests)](https://github.com/MrClock8163/GeoComPy)\n[![Docs status](https://app.readthedocs.org/projects/geocompy/badge/?version=latest)](https://geocompy.readthedocs.io/latest/)\n[![Typed](https://img.shields.io/pypi/types/geocompy)](https://pypi.org/project/geocompy/)\n\nGeoComPy is a Python library providing wrapper functions for serial\ncommunication protocols of Leica surveying instruments.\n\nThe package is mainly built around the GeoCOM ASCII protocol, supported by\na number of total stations and other instruments running TPS1000, 1100, 1200\nand other firmware. For some older instruments that do not support GeoCOM,\nthe GSI Online command set is used for communication.\n\n- **Download:** https://pypi.org/project/geocompy/\n- **Documentation:** https://geocompy.readthedocs.io/\n- **Source:** https://github.com/MrClock8163/GeoComPy\n- **Bug reports:** https://github.com/MrClock8163/GeoComPy/issues\n\n\u003e[!TIP]\n\u003eCommand line applications using GeoComPy are available as a separate\n\u003ecomplimentary package called\n\u003e[Instrumentman](https://github.com/MrClock8163/Instrumentman).\n\n## Main features\n\n- Pure Python implementation\n- Support for type checkers\n- Primitives for relevant data\n- Command building and parsing through function calls\n- Multiple supported protocols (e.g. GeoCOM, GSI Online)\n\n## Requirements\n\nTo use the package, Python 3.11 or higher is required.\n\nFor the platform independent serial communication, GeoComPy relies on the\n[pySerial](https://pypi.org/project/pyserial/) package to provide the\nnecessary abstractions.\n\n## Installation\n\nThe preferred method to install GeoComPy is through PyPI, where both wheel\nand source distributions are made available.\n\n```shell\npython -m pip install geocompy\n```\n\nIf not yet published changes/fixes are needed, that are only available in\nsource, GeoComPy can also be installed locally from source, without any\nexternal tools. Once the repository is cloned to a directory, it can be\ninstalled with pip.\n\n```shell\ngit clone https://github.com/MrClock8163/GeoComPy.git\ncd GeoComPy\npython -m pip install .\n```\n\n## Short example\n\nThe below example demonstrates how to connect to a GeoCOM capable instrument\nthrough a serial connection. Once the connection is up and running, the\ntotal station is instructed to turn to horizontal 0, and position the\ntelescope parallel to the ground.\n\n```py\nfrom geocompy import (\n    Angle,\n    open_serial,\n    GeoCom\n)\n\n\nwith open_serial(\"COM1\") as com:\n    tps = GeoCom(com)\n    tps.aut.turn_to(Angle(0), Angle(90, 'deg'))\n```\n\n## License\n\nGeoComPy is free and open source software, and it is distributed under the terms of the\n[MIT License](https://opensource.org/license/mit).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrclock8163%2Fgeocompy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrclock8163%2Fgeocompy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrclock8163%2Fgeocompy/lists"}