HoloSync


NameHoloSync JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryA Modern way to sync files
upload_time2025-08-06 00:48:12
maintainerNone
docs_urlNone
authorTristan McBride Sr.
requires_python>=3.10
licenseNone
keywords ai agents skills productivity automation voice assistant chatbot llm large language model
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
---

# HoloSync

**HoloSync** is a flexible Python utility for syncing code files (skills, scripts, or any directory content) from a folder in a GitHub repository to your local directory.
Supports public and private repos, selective file syncing, local-over-remote file protection, and easy integration.

---

## Features

* **Sync entire folders** or select specific files.
* **Skip or override** existing local files.
* **Supports private repos** (via GitHub token).
* **Branch selection**—sync from any branch, not just master/main.
* **Simple, readable code**—ready to drop into any project.
* **Preserves your local changes** by default.

---

## Installation

Simply copy `HoloSync` into your project, or package as you like.

Dependencies:

* Python 3.10+
* `requests`

---

## Usage

### **1. Basic Example (Sync All Files)**

```python
from HoloSync import HoloSync

syncer = HoloSync(
    githubRepo='TristanMcBrideSr/SkillForge',
    repoFolder='SkillForge',
    syncDir='./skills'
)
syncer.startSync()
```

### **2. Sync Only Specific Files**

```python
syncer = HoloSync(
    githubRepo='your-username/your-repo',
    repoFolder='MySkills',
    syncDir='./skills'
)
# Only sync 'weather.py' and 'research.py'
syncer.startSync(syncList=['weather', 'research'])
```

### **3. Override Existing Local Files**

```python
syncer = HoloSync(
    githubRepo='TristanMcBrideSr/SkillForge',
    repoFolder='SkillForge',
    syncDir='./skills'
)
# Force override any local file with the downloaded version
syncer.startSync(override=True)
```

### **4. Sync From a Private Repo**

```python
syncer = HoloSync(
    githubRepo='your-username/private-repo',
    repoFolder='MySkills',
    syncDir='./skills'
)
# Provide a GitHub token (classic or fine-grained with repo read access)
syncer.startSync(githubToken='YOUR_GITHUB_TOKEN')
```

### **5. Sync From a Different Branch**

```python
syncer = HoloSync(
    githubRepo='TristanMcBrideSr/SkillForge',
    repoFolder='SkillForge',
    syncDir='./skills'
)
syncer.startSync(branch='dev')  # Sync from 'dev' branch
```

---

## Parameters

### `HoloSync` constructor

* **githubRepo**: GitHub repo in the form `"owner/repo"` (required)
* **repoFolder**: Folder inside the repo to sync from (required)
* **syncDir**: Local directory to sync files to (required)

### `startSync(**kwargs)`

* **skillList** (`list`): Only these files will be synced (by name, `.py` optional).
* **override** (`bool`): If `True`, always overwrite existing local files.
* **githubToken** (`str`): Personal GitHub token for private repo access.
* **branch** (`str`): Branch to sync from (default `"master"`).

---

## How It Works

* Downloads a zip of the specified repo+branch.
* Extracts just the folder you specify.
* Copies each file:

  * **By default:** only new files are copied (existing files are untouched).
  * **With `override=True`:** always overwrites local files.
* Lets you pick which files to sync, or sync all.

---

## Error Handling

* Raises if folders/files are missing.
* Logs sync actions and errors to Python logger.
* Skips files that already exist locally, unless `override` is set.

---

## Example: Complete Workflow

```python
syncer = HoloSync(
    githubRepo='my-org/myrepo',
    repoFolder='skills',
    syncDir='./skills'
)
syncer.startSync(
    syncList=['my_skill', 'other_skill.py'],
    override=False,
    githubToken=os.getenv('GITHUB_TOKEN'), # If syncing from a private repo else you can omit this
    branch='main'
)
```

---

## Code Examples

You can find code examples on my [GitHub repository](https://github.com/TristanMcBrideSr/TechBook).

---

## License

This project is licensed under the [Apache License, Version 2.0](LICENSE).
Copyright 2025 Tristan McBride Sr.

---

## Acknowledgements

Project by:
- Tristan McBride Sr.
- Sybil


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "HoloSync",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "\"Tristan McBride Sr.\" <142635792+TristanMcBrideSr@users.noreply.github.com>",
    "keywords": "AI, Agents, Skills, Productivity, Automation, Voice Assistant, Chatbot, LLM, Large Language Model",
    "author": "Tristan McBride Sr.",
    "author_email": "\"Tristan McBride Sr.\" <142635792+TristanMcBrideSr@users.noreply.github.com>",
    "download_url": "https://files.pythonhosted.org/packages/41/15/6f7c351e1d4ea310e6c7f87f70213ac06977249ec14821c9e6830053dd25/holosync-0.1.0.tar.gz",
    "platform": null,
    "description": "\ufeff\r\n---\r\n\r\n# HoloSync\r\n\r\n**HoloSync** is a flexible Python utility for syncing code files (skills, scripts, or any directory content) from a folder in a GitHub repository to your local directory.\r\nSupports public and private repos, selective file syncing, local-over-remote file protection, and easy integration.\r\n\r\n---\r\n\r\n## Features\r\n\r\n* **Sync entire folders** or select specific files.\r\n* **Skip or override** existing local files.\r\n* **Supports private repos** (via GitHub token).\r\n* **Branch selection**\u2014sync from any branch, not just master/main.\r\n* **Simple, readable code**\u2014ready to drop into any project.\r\n* **Preserves your local changes** by default.\r\n\r\n---\r\n\r\n## Installation\r\n\r\nSimply copy `HoloSync` into your project, or package as you like.\r\n\r\nDependencies:\r\n\r\n* Python 3.10+\r\n* `requests`\r\n\r\n---\r\n\r\n## Usage\r\n\r\n### **1. Basic Example (Sync All Files)**\r\n\r\n```python\r\nfrom HoloSync import HoloSync\r\n\r\nsyncer = HoloSync(\r\n    githubRepo='TristanMcBrideSr/SkillForge',\r\n    repoFolder='SkillForge',\r\n    syncDir='./skills'\r\n)\r\nsyncer.startSync()\r\n```\r\n\r\n### **2. Sync Only Specific Files**\r\n\r\n```python\r\nsyncer = HoloSync(\r\n    githubRepo='your-username/your-repo',\r\n    repoFolder='MySkills',\r\n    syncDir='./skills'\r\n)\r\n# Only sync 'weather.py' and 'research.py'\r\nsyncer.startSync(syncList=['weather', 'research'])\r\n```\r\n\r\n### **3. Override Existing Local Files**\r\n\r\n```python\r\nsyncer = HoloSync(\r\n    githubRepo='TristanMcBrideSr/SkillForge',\r\n    repoFolder='SkillForge',\r\n    syncDir='./skills'\r\n)\r\n# Force override any local file with the downloaded version\r\nsyncer.startSync(override=True)\r\n```\r\n\r\n### **4. Sync From a Private Repo**\r\n\r\n```python\r\nsyncer = HoloSync(\r\n    githubRepo='your-username/private-repo',\r\n    repoFolder='MySkills',\r\n    syncDir='./skills'\r\n)\r\n# Provide a GitHub token (classic or fine-grained with repo read access)\r\nsyncer.startSync(githubToken='YOUR_GITHUB_TOKEN')\r\n```\r\n\r\n### **5. Sync From a Different Branch**\r\n\r\n```python\r\nsyncer = HoloSync(\r\n    githubRepo='TristanMcBrideSr/SkillForge',\r\n    repoFolder='SkillForge',\r\n    syncDir='./skills'\r\n)\r\nsyncer.startSync(branch='dev')  # Sync from 'dev' branch\r\n```\r\n\r\n---\r\n\r\n## Parameters\r\n\r\n### `HoloSync` constructor\r\n\r\n* **githubRepo**: GitHub repo in the form `\"owner/repo\"` (required)\r\n* **repoFolder**: Folder inside the repo to sync from (required)\r\n* **syncDir**: Local directory to sync files to (required)\r\n\r\n### `startSync(**kwargs)`\r\n\r\n* **skillList** (`list`): Only these files will be synced (by name, `.py` optional).\r\n* **override** (`bool`): If `True`, always overwrite existing local files.\r\n* **githubToken** (`str`): Personal GitHub token for private repo access.\r\n* **branch** (`str`): Branch to sync from (default `\"master\"`).\r\n\r\n---\r\n\r\n## How It Works\r\n\r\n* Downloads a zip of the specified repo+branch.\r\n* Extracts just the folder you specify.\r\n* Copies each file:\r\n\r\n  * **By default:** only new files are copied (existing files are untouched).\r\n  * **With `override=True`:** always overwrites local files.\r\n* Lets you pick which files to sync, or sync all.\r\n\r\n---\r\n\r\n## Error Handling\r\n\r\n* Raises if folders/files are missing.\r\n* Logs sync actions and errors to Python logger.\r\n* Skips files that already exist locally, unless `override` is set.\r\n\r\n---\r\n\r\n## Example: Complete Workflow\r\n\r\n```python\r\nsyncer = HoloSync(\r\n    githubRepo='my-org/myrepo',\r\n    repoFolder='skills',\r\n    syncDir='./skills'\r\n)\r\nsyncer.startSync(\r\n    syncList=['my_skill', 'other_skill.py'],\r\n    override=False,\r\n    githubToken=os.getenv('GITHUB_TOKEN'), # If syncing from a private repo else you can omit this\r\n    branch='main'\r\n)\r\n```\r\n\r\n---\r\n\r\n## Code Examples\r\n\r\nYou can find code examples on my [GitHub repository](https://github.com/TristanMcBrideSr/TechBook).\r\n\r\n---\r\n\r\n## License\r\n\r\nThis project is licensed under the [Apache License, Version 2.0](LICENSE).\r\nCopyright 2025 Tristan McBride Sr.\r\n\r\n---\r\n\r\n## Acknowledgements\r\n\r\nProject by:\r\n- Tristan McBride Sr.\r\n- Sybil\r\n\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Modern way to sync files",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/TristanMcBrideSr"
    },
    "split_keywords": [
        "ai",
        " agents",
        " skills",
        " productivity",
        " automation",
        " voice assistant",
        " chatbot",
        " llm",
        " large language model"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a387af3c3dee4f86cf4aed2d2c17a4c3653ee5cb8db654371176efcac14004c",
                "md5": "d2ead7a4d7c3a208c589f6a9aa870c47",
                "sha256": "49e4451a076e7fe1ca61ceb2d3688a5410cff55e01449195f46e3c1adba28e75"
            },
            "downloads": -1,
            "filename": "holosync-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d2ead7a4d7c3a208c589f6a9aa870c47",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 3205,
            "upload_time": "2025-08-06T00:48:11",
            "upload_time_iso_8601": "2025-08-06T00:48:11.195287Z",
            "url": "https://files.pythonhosted.org/packages/9a/38/7af3c3dee4f86cf4aed2d2c17a4c3653ee5cb8db654371176efcac14004c/holosync-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "41156f7c351e1d4ea310e6c7f87f70213ac06977249ec14821c9e6830053dd25",
                "md5": "4b93f752f6fcfdbe7117b8d25e7cb835",
                "sha256": "b5eca03f50f1c47237692b1ed591e70b4919604866a04a9070c8fcd7204d6100"
            },
            "downloads": -1,
            "filename": "holosync-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "4b93f752f6fcfdbe7117b8d25e7cb835",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 3450,
            "upload_time": "2025-08-06T00:48:12",
            "upload_time_iso_8601": "2025-08-06T00:48:12.494509Z",
            "url": "https://files.pythonhosted.org/packages/41/15/6f7c351e1d4ea310e6c7f87f70213ac06977249ec14821c9e6830053dd25/holosync-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-06 00:48:12",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "holosync"
}
        
Elapsed time: 1.23721s