From 2c57acf3db06238adb15a38242e825b1a14113b7 Mon Sep 17 00:00:00 2001 From: Matt Spinola Date: Mon, 13 Jul 2026 22:17:50 -0400 Subject: [PATCH 1/2] chore: configure metadata and templates for open source release --- .github/ISSUE_TEMPLATE/bug_report.yml | 37 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.yml | 29 +++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 22 +++++++++++++ README.md | 18 ++++++++++- pyproject.toml | 15 +++++++++ 5 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..a556690 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,37 @@ +name: Bug Report +description: Create a report to help us improve cotdata +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: input + id: os + attributes: + label: Operating System + description: What OS are you running? (Note: the Norgate Data Updater strictly requires Windows). + placeholder: e.g., Windows 11, macOS Sonoma + validations: + required: true + - type: textarea + id: description + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to Reproduce + description: How can we reproduce this? + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + description: What did you expect to happen? + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..b31a851 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,29 @@ +name: Feature Request +description: Suggest an idea for this project +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest a feature! + - type: textarea + id: problem + attributes: + label: Is your feature request related to a problem? Please describe. + description: A clear and concise description of what the problem is. + validations: + required: true + - type: textarea + id: solution + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Describe alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..48d0ebe --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ +## Description + +Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. + +Fixes # (issue) + +## Type of change + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] This change requires a documentation update + +## Checklist: + +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have run tests (e.g. `pytest`) and they pass locally +- [ ] Any dependent changes have been merged and published in downstream modules diff --git a/README.md b/README.md index a18e052..322189e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # cotdata +[![PyPI version](https://img.shields.io/pypi/v/cotdata.svg)](https://pypi.org/project/cotdata/) +[![Python versions](https://img.shields.io/pypi/pyversions/cotdata.svg)](https://pypi.org/project/cotdata/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + Canonical data layer for the COT / futures-strategy stack. It exists so that quantitative analysis toolset never fetch data directly. They read a shared, file-based store through a stable API. ``` @@ -18,7 +22,19 @@ Canonical data layer for the COT / futures-strategy stack. It exists so that qua └──────────────────┘ └───────────────────┘ ``` -## Workspace setup (uv) +## Installation + +You can install `cotdata` directly from PyPI: +```bash +pip install cotdata +``` + +If you are running the **producer machine** on Windows to fetch Norgate data, install with the `norgate` extra: +```bash +pip install "cotdata[norgate]" +``` + +## Development When using Norgate Data one must run this on a Windows machine as Norgate Updater requires Windows. diff --git a/pyproject.toml b/pyproject.toml index 82f56b3..2af1b0c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,22 @@ build-backend = "setuptools.build_meta" name = "cotdata" version = "0.1.0" description = "Canonical data layer for COT/futures strategies — a producer/consumer split over a file-based store." +readme = "README.md" +authors = [ + {name = "Matt S.", email = "cotanalyzer@gmail.com"} +] +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] requires-python = ">=3.9" + +[project.urls] +Homepage = "https://github.com/mspinola/cotdata" +Repository = "https://github.com/mspinola/cotdata" +Issues = "https://github.com/mspinola/cotdata/issues" + dependencies = [ "pandas>=1.5", "pyarrow>=10", From 61e51854bd56eb0a3ca463a131bd4f9803a38853 Mon Sep 17 00:00:00 2001 From: Matt Spinola Date: Mon, 13 Jul 2026 22:26:46 -0400 Subject: [PATCH 2/2] fix: correct pyproject.toml section header so dependencies are parsed correctly --- pyproject.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2af1b0c..a4e1340 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,12 +16,6 @@ classifiers = [ "Operating System :: OS Independent", ] requires-python = ">=3.9" - -[project.urls] -Homepage = "https://github.com/mspinola/cotdata" -Repository = "https://github.com/mspinola/cotdata" -Issues = "https://github.com/mspinola/cotdata/issues" - dependencies = [ "pandas>=1.5", "pyarrow>=10", @@ -32,6 +26,11 @@ dependencies = [ "PyYAML>=6.0", ] +[project.urls] +Homepage = "https://github.com/mspinola/cotdata" +Repository = "https://github.com/mspinola/cotdata" +Issues = "https://github.com/mspinola/cotdata/issues" + [project.optional-dependencies] # Producer-only, Windows: the Norgate Data Updater must be installed & running. norgate = ["norgatedata"]