From 3960a3cef17fc5d8f3e394cc11eff3453dc4edb1 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:40:41 -0800 Subject: [PATCH 01/12] add : git/github related stuffs added. --- .gitignore | 100 +++++++++++++++++++++++++++++++++++++++++++ AUTHORS.md | 12 ++++++ CHANGELOG.md | 21 +++++++++ LICENSE | 21 +++++++++ SECURITY.md | 14 ++++++ dev-requirements.txt | 6 +++ otherfiles/meta.yaml | 30 +++++++++++++ 7 files changed, 204 insertions(+) create mode 100644 .gitignore create mode 100644 AUTHORS.md create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 SECURITY.md create mode 100644 dev-requirements.txt create mode 100644 otherfiles/meta.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b811a9e --- /dev/null +++ b/.gitignore @@ -0,0 +1,100 @@ +# Created by .ignore support plugin (hsz.mobi) +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# dotenv +.env + +# virtualenv +.venv/ +venv/ +ENV/ + +# Spyder project settings +.spyderproject + +# Rope project settings +.ropeproject +### Example user template template +### Example user template + +# IntelliJ project files +.idea +*.iml +out +gen diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 0000000..82e334e --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,12 @@ +# Core Developers +---------- +- Sadra Sabouri - Open Science Laboratory ([Github](https://github.com/sadrasabouri)) ** +- Sepand Haghighi - Open Science Laboratory ([Github](https://github.com/sepandhaghighi)) ** + + +** **Maintainer** + +# Other Contributors +---------- + + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a85479e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [Unreleased] +### Added +- `TIKTOKEN_R50K.LINEAR_ALL` model +- `TIKTOKEN_R50K.LINEAR_ENGLISH` model +### Changed +- `README.md` updated +## [0.1] - 2025-08-30 +### Added +- `RULE_BASED.UNIVERSAL` model +- `RULE_BASED.GPT_4` model +- `RULE_BASED.GPT_3_5` model + + +[Unreleased]: https://github.com/openscilab/TODO/compare/v0.1...dev +[0.1]: https://github.com/openscilab/TODO/compare/8385d46...v0.1 \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a05d9c4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 OpenSciLab + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..d32818b --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,14 @@ +# Security policy + +## Supported versions + +| Version | Supported | +| ------------- | ------------------ | +| 0.1 | :white_check_mark: | +| < 0.1 | :x: | + +## Reporting a vulnerability + +Please report security vulnerabilities by email to [TODO@openscilab.com](mailto:TODO@openscilab.com "TODO@openscilab.com"). + +If the security vulnerability is accepted, a dedicated bugfix release will be issued as soon as possible (depending on the complexity of the fix). \ No newline at end of file diff --git a/dev-requirements.txt b/dev-requirements.txt new file mode 100644 index 0000000..e4209e7 --- /dev/null +++ b/dev-requirements.txt @@ -0,0 +1,6 @@ +setuptools>=40.8.0 +vulture>=1.0 +bandit>=1.5.1 +pydocstyle>=3.0.0 +pytest>=4.3.1 +pytest-cov>=2.6.1 \ No newline at end of file diff --git a/otherfiles/meta.yaml b/otherfiles/meta.yaml new file mode 100644 index 0000000..17d6bcc --- /dev/null +++ b/otherfiles/meta.yaml @@ -0,0 +1,30 @@ +{% set name = "TODO" %} +{% set version = "0.1" %} + +package: + name: {{ name|lower }} + version: {{ version }} +source: + git_url: https://github.com/openscilab/TODO + git_rev: v{{ version }} +build: + noarch: python + number: 0 + script: {{ PYTHON }} -m pip install . -vv +requirements: + host: + - pip + - setuptools + - python >=3.7 + run: + - python >=3.7 +about: + home: https://github.com/openscilab/TODO + license: MIT + license_family: MIT + summary: TODO + description: | + TODO +extra: + recipe-maintainers: + - TODO From c51871c81320e0c46b3e493cb94d99ce4d9c2dea Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:41:01 -0800 Subject: [PATCH 02/12] add : main modules added. --- [module]/__init__.py | 4 ++++ [module]/functions.py | 2 ++ [module]/params.py | 4 ++++ 3 files changed, 10 insertions(+) create mode 100644 [module]/__init__.py create mode 100644 [module]/functions.py create mode 100644 [module]/params.py diff --git a/[module]/__init__.py b/[module]/__init__.py new file mode 100644 index 0000000..617c184 --- /dev/null +++ b/[module]/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +"""TODO modules.""" + +from .params import TODO_VERSION diff --git a/[module]/functions.py b/[module]/functions.py new file mode 100644 index 0000000..439314a --- /dev/null +++ b/[module]/functions.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +"""TODO functions.""" diff --git a/[module]/params.py b/[module]/params.py new file mode 100644 index 0000000..ef49802 --- /dev/null +++ b/[module]/params.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +"""TODO parameters and constants.""" + +TODO_VERSION = "0.1" From 0db872f10aa9078af0e1c83314be9c53e46f8565 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:41:20 -0800 Subject: [PATCH 03/12] add : test things added. --- autopep8.bat | 4 ++++ autopep8.sh | 5 +++++ codecov.yml | 14 ++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 autopep8.bat create mode 100644 autopep8.sh create mode 100644 codecov.yml diff --git a/autopep8.bat b/autopep8.bat new file mode 100644 index 0000000..8389cd9 --- /dev/null +++ b/autopep8.bat @@ -0,0 +1,4 @@ +python -m autopep8 TODO --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose --ignore=E721 +python -m autopep8 otherfiles --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose --ignore=E721 +python -m autopep8 tests --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose --ignore=E721 +python -m autopep8 setup.py --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose diff --git a/autopep8.sh b/autopep8.sh new file mode 100644 index 0000000..d86c788 --- /dev/null +++ b/autopep8.sh @@ -0,0 +1,5 @@ +#!/bin/sh +python -m autopep8 TODO --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose --ignore=E721 +python -m autopep8 otherfiles --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose --ignore=E721 +python -m autopep8 tests --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose --ignore=E721 +python -m autopep8 setup.py --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..600c260 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +codecov: + require_ci_to_pass: yes + +coverage: + precision: 2 + round: up + range: "70...100" + status: + patch: + default: + enabled: no + project: + default: + threshold: 1% From e1f93dbb32ef4d6e539ad1a41ab97a386af8baee Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:41:42 -0800 Subject: [PATCH 04/12] add : helper functions added. --- otherfiles/requirements-splitter.py | 12 +++++ otherfiles/version_check.py | 71 +++++++++++++++++++++++++++++ setup.py | 65 ++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 otherfiles/requirements-splitter.py create mode 100644 otherfiles/version_check.py create mode 100644 setup.py diff --git a/otherfiles/requirements-splitter.py b/otherfiles/requirements-splitter.py new file mode 100644 index 0000000..4d095bb --- /dev/null +++ b/otherfiles/requirements-splitter.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +"""Requirements splitter.""" + +test_req = "" + +with open('dev-requirements.txt', 'r') as f: + for line in f: + if '==' not in line: + test_req += line + +with open('test-requirements.txt', 'w') as f: + f.write(test_req) diff --git a/otherfiles/version_check.py b/otherfiles/version_check.py new file mode 100644 index 0000000..c1b95c1 --- /dev/null +++ b/otherfiles/version_check.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +"""Version-check script.""" +import os +import sys +import codecs +Failed = 0 +TODO_VERSION = "0.1" + + +SETUP_ITEMS = [ + "version='{0}'", + 'https://github.com/openscilab/TODO/tarball/v{0}'] +README_ITEMS = [ + "[Version {0}](https://github.com/openscilab/TODO/archive/v{0}.zip)", + "pip install TODO=={0}"] +CHANGELOG_ITEMS = [ + "## [{0}]", + "https://github.com/openscilab/TODO/compare/v{0}...dev", + "[{0}]:"] +PARAMS_ITEMS = ['TODO_VERSION = "{0}"'] +META_ITEMS = ['% set version = "{0}" %'] +ISSUE_TEMPLATE_ITEMS = ["- TODO {0}"] +SECURITY_ITEMS = ["| {0} | :white_check_mark: |", "| < {0} | :x: |"] + +FILES = { + os.path.join("otherfiles", "meta.yaml"): META_ITEMS, + "setup.py": SETUP_ITEMS, + "README.md": README_ITEMS, + "CHANGELOG.md": CHANGELOG_ITEMS, + "SECURITY.md": SECURITY_ITEMS, + os.path.join("TODO", "params.py"): PARAMS_ITEMS, + os.path.join(".github", "ISSUE_TEMPLATE", "bug_report.yml"): ISSUE_TEMPLATE_ITEMS, +} + +TEST_NUMBER = len(FILES) + + +def print_result(failed: bool = False) -> None: + """ + Print final result. + + :param failed: failed flag + """ + message = "Version tag tests " + if not failed: + print("\n" + message + "passed!") + else: + print("\n" + message + "failed!") + print("Passed : " + str(TEST_NUMBER - Failed) + "/" + str(TEST_NUMBER)) + + +if __name__ == "__main__": + for file_name in FILES: + try: + file_content = codecs.open( + file_name, "r", "utf-8", 'ignore').read() + for test_item in FILES[file_name]: + if file_content.find(test_item.format(TODO_VERSION)) == -1: + print("Incorrect version tag in " + file_name) + Failed += 1 + break + except Exception as e: + Failed += 1 + print("Error in " + file_name + "\n" + "Message : " + str(e)) + + if Failed == 0: + print_result(False) + sys.exit(0) + else: + print_result(True) + sys.exit(1) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..304d603 --- /dev/null +++ b/setup.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +"""Setup module.""" +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + + +def get_requires() -> list: + """Read requirements.txt.""" + requirements = open("requirements.txt", "r").read() + return list(filter(lambda x: x != "", requirements.split())) + + +def read_description() -> str: + """Read README.md and CHANGELOG.md.""" + try: + with open("README.md") as r: + description = "\n" + description += r.read() + with open("CHANGELOG.md") as c: + description += "\n" + description += c.read() + return description + except Exception: + return '''TODO''' + + +setup( + name='TODO', + packages=[ + 'TODO', ], + version='0.1', + description='TODO', + long_description=read_description(), + long_description_content_type='text/markdown', + author='TODO Development Team', + author_email='TODO@openscilab.com', + url='https://github.com/openscilab/TODO', + download_url='https://github.com/openscilab/TODO/tarball/v0.1', + keywords="TODO TODO TODO", + project_urls={ + 'Source': 'https://github.com/openscilab/TODO', + }, + install_requires=get_requires(), + python_requires='>=3.7', + classifiers=[ + 'Development Status :: 2 - Pre-Alpha', + 'Natural Language :: English', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', + 'Intended Audience :: TODO', + 'Intended Audience :: TODO', + 'Topic :: TODO', + 'Topic :: TODO', + ], + license='MIT', +) From e96fa04a656d61bd43267db292c07d8cb28715c9 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:41:57 -0800 Subject: [PATCH 05/12] add : misc. added. --- otherfiles/RELEASE.md | 40 ++++++++++++++++++++++++++++++++++++++++ otherfiles/donation.png | Bin 0 -> 8186 bytes 2 files changed, 40 insertions(+) create mode 100644 otherfiles/RELEASE.md create mode 100644 otherfiles/donation.png diff --git a/otherfiles/RELEASE.md b/otherfiles/RELEASE.md new file mode 100644 index 0000000..04c01db --- /dev/null +++ b/otherfiles/RELEASE.md @@ -0,0 +1,40 @@ +# TODO Release Instructions + +**Last Update: 2025-04-17** + +1. Create the `release` branch under `dev` +2. Update all version tags + 1. `setup.py` + 2. `README.md` + 3. `otherfiles/version_check.py` + 4. `otherfiles/meta.yaml` + 5. `TODO/params.py` +3. Update `CHANGELOG.md` + 1. Add a new header under `Unreleased` section (Example: `## [0.1] - 2022-08-17`) + 2. Add a new compare link to the end of the file (Example: `[0.2]: https://github.com/openscilab/TODO/compare/v0.1...v0.2`) + 3. Update `dev` compare link (Example: `[Unreleased]: https://github.com/openscilab/TODO/compare/v0.2...dev`) +4. Update `.github/ISSUE_TEMPLATE/bug_report.yml` + 1. Add new version tag to `TODO version` dropbox options +5. Create a PR from `release` to `dev` + 1. Title: `Version x.x` (Example: `Version 0.1`) + 2. Tag all related issues + 3. Labels: `release` + 4. Set milestone + 5. Wait for all CI pass + 6. Need review (**2** reviewers) + 7. Squash and merge + 8. Delete `release` branch +6. Merge `dev` branch into `main` + 1. `git checkout main` + 2. `git merge dev` + 3. `git push origin main` + 4. Wait for all CI pass +7. Create a new release + 1. Target branch: `main` + 2. Tag: `vx.x` (Example: `v0.1`) + 3. Title: `Version x.x` (Example: `Version 0.1`) + 4. Copy changelogs + 5. Tag all related issues +8. Bump!! +9. Close this version issues +10. Close milestone \ No newline at end of file diff --git a/otherfiles/donation.png b/otherfiles/donation.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c2e50183ce06a96c6f1dd330c68a68ea487acf GIT binary patch literal 8186 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 XEi;dB-17T>C-tg|nhG^?R+0Y$I+mEz literal 0 HcmV?d00001 From cc3fee6c5489ee1247a5b5ba880c3e102e830b72 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:44:53 -0800 Subject: [PATCH 06/12] add : github stuff added. --- .github/CODE_OF_CONDUCT.md | 130 +++++++++++++++++++++ .github/CONTRIBUTING.md | 17 +++ .github/ISSUE_TEMPLATE/bug_report.yml | 97 +++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 ++ .github/ISSUE_TEMPLATE/feature_request.yml | 36 ++++++ .github/PULL_REQUEST_TEMPLATE.md | 6 + .github/dependabot.yml | 11 ++ .github/workflows/publish_pypi.yml | 34 ++++++ .github/workflows/test.yml | 57 +++++++++ 9 files changed, 396 insertions(+) create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/publish_pypi.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..86cb462 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,130 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +TODO@openscilab.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..76ad605 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,17 @@ +# Contribution + +Changes and improvements are more than welcome! ❤️ Feel free to fork and open a pull request. + + +Please consider the following : + + +1. Fork it! +2. Create your feature branch (under `dev` branch) +3. Add your functions/methods to proper files +4. Add standard `docstring` to your functions/methods +5. Add tests for your functions/methods (`doctest` testcases in `test` folder) +6. Pass all CI tests +7. Update `CHANGELOG.md` + - Describe changes under `[Unreleased]` section +8. Submit a pull request into `dev` (please complete the pull request template) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..cf6ff87 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,97 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +body: + - type: markdown + attributes: + value: | + Thanks for your time to fill out this bug report! + - type: input + id: contact + attributes: + label: Contact details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Provide a clear and concise description of what the bug is. + placeholder: > + Tell us a description of the bug. + validations: + required: true + - type: textarea + id: step-to-reproduce + attributes: + label: Steps to reproduce + description: Provide details of how to reproduce the bug. + placeholder: > + ex. 1. Go to '...' + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: What did you expect to happen? + placeholder: > + ex. I expected '...' to happen + validations: + required: true + - type: textarea + id: actual-behavior + attributes: + label: Actual behavior + description: What did actually happen? + placeholder: > + ex. Instead '...' happened + validations: + required: true + - type: dropdown + id: operating-system + attributes: + label: Operating system + description: Which operating system are you using? + options: + - Windows + - macOS + - Linux + default: 0 + validations: + required: true + - type: dropdown + id: python-version + attributes: + label: Python version + description: Which version of Python are you using? + options: + - Python 3.13 + - Python 3.12 + - Python 3.11 + - Python 3.10 + - Python 3.9 + - Python 3.8 + - Python 3.7 + - Python 3.6 + default: 1 + validations: + required: true + - type: dropdown + id: TODO-version + attributes: + label: TODO version + description: Which version of TODO are you using? + options: + - TODO 0.1 + default: 0 + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3f0d75b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Discord + url: https://discord.gg/TODO + about: Ask questions and discuss with other TODO community members + - name: Website + url: https://openscilab.com/ + about: Check out our website for more information diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..139114c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,36 @@ +name: Feature Request +description: Suggest a feature for this project +title: "[Feature]: " +body: + - type: textarea + id: description + attributes: + label: Describe the feature you want to add + placeholder: > + I'd like to be able to [...] + validations: + required: true + - type: textarea + id: possible-solution + attributes: + label: Describe your proposed solution + placeholder: > + I think this could be done by [...] + validations: + required: false + - type: textarea + id: alternatives + attributes: + label: Describe alternatives you've considered, if relevant + placeholder: > + Another way to do this would be [...] + validations: + required: false + - type: textarea + id: additional-context + attributes: + label: Additional context + placeholder: > + Add any other context or screenshots about the feature request here. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ded12d6 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,6 @@ +#### Reference Issues/PRs + +#### What does this implement/fix? Explain your changes. + +#### Any other comments? + diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5952903 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: +- package-ecosystem: pip + directory: "/" + schedule: + interval: weekly + time: "01:30" + open-pull-requests-limit: 10 + target-branch: dev + assignees: + - "TODO" diff --git a/.github/workflows/publish_pypi.yml b/.github/workflows/publish_pypi.yml new file mode 100644 index 0000000..2a3bd29 --- /dev/null +++ b/.github/workflows/publish_pypi.yml @@ -0,0 +1,34 @@ +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Upload Python Package + +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - '*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + deploy: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist bdist_wheel + twine upload dist/*.tar.gz + twine upload dist/*.whl diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..5bccec6 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,57 @@ +name: CI + +on: + push: + branches: + - main + - dev + + pull_request: + branches: + - main + - dev + +env: + TEST_PYTHON_VERSION: 3.9 + TEST_OS: 'ubuntu-22.04' + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-22.04, windows-2022, macOS-13] + python-version: [3.7, 3.8, 3.9, 3.10.5, 3.11.0, 3.12.0, 3.13.0] + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Installation + run: | + python -m pip install --upgrade pip + pip install . + - name: Test requirements installation + run: | + pip install -r dev-requirements.txt + - name: Test with pytest + run: | + python -m pytest . --cov=TODO --cov-report=term + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + if: matrix.python-version == env.TEST_PYTHON_VERSION && matrix.os == env.TEST_OS + - name: Vulture, Bandit and Pydocstyle tests + run: | + python -m vulture TODO/ setup.py --min-confidence 80 --sort-by-size + python -m bandit -r TODO + python -m pydocstyle TODO + - name: Version check + run: | + python otherfiles/version_check.py + if: matrix.python-version == env.TEST_PYTHON_VERSION From dd408dd513dadf2ddf239643d62a3ee1961b8c0a Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Tue, 20 Jan 2026 23:46:37 -0800 Subject: [PATCH 07/12] add : readme added. --- README.md | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b005e1d --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +
+

TODO

+
+ PyPI version + + built with Python3 + GitHub repo size + Discord Channel +
+ +---------- + + +## Overview +

+TODO +

+ + + + + + + + + + +
PyPI Counter + + + +
Github Stars + + + +
+ + + + + + + + + + + +
Branchmaindev
CI + + + +
+ + +## Installation + +### PyPI +- Check [Python Packaging User Guide](https://packaging.python.org/installing/) +- Run `pip install TODO==0.1` +### Source code +- Download [Version 0.1](https://github.com/openscilab/TODO/archive/v0.1.zip) or [Latest Source](https://github.com/openscilab/TODO/archive/dev.zip) +- Run `pip install .` + +## Usage + +TODO + +## Issues & bug reports + +Just fill an issue and describe it. We'll check it ASAP! or send an email to [TODO@openscilab.com](mailto:TODO@openscilab.com "TODO@openscilab.com"). + +- Please complete the issue template + +You can also join our discord server + + + Discord Channel + + +## References + +## Show your support + + +### Star this repo + +Give a ⭐️ if this project helped you! + +### Donate to our project +If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) . + +TODO Donation From 441c36dc2e41eb6d5c13d8d2c8950d8a6b7ccbfd Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Mon, 26 Jan 2026 18:24:26 -0800 Subject: [PATCH 08/12] rename : [module] renamed to TODO. --- {[module] => TODO}/__init__.py | 0 {[module] => TODO}/functions.py | 0 {[module] => TODO}/params.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {[module] => TODO}/__init__.py (100%) rename {[module] => TODO}/functions.py (100%) rename {[module] => TODO}/params.py (100%) diff --git a/[module]/__init__.py b/TODO/__init__.py similarity index 100% rename from [module]/__init__.py rename to TODO/__init__.py diff --git a/[module]/functions.py b/TODO/functions.py similarity index 100% rename from [module]/functions.py rename to TODO/functions.py diff --git a/[module]/params.py b/TODO/params.py similarity index 100% rename from [module]/params.py rename to TODO/params.py From 234b2596f33fc160224ac808e5522f8ed8fa4736 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Mon, 26 Jan 2026 18:27:24 -0800 Subject: [PATCH 09/12] add : dummy test added. --- tests/test_todo.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/test_todo.py diff --git a/tests/test_todo.py b/tests/test_todo.py new file mode 100644 index 0000000..73da749 --- /dev/null +++ b/tests/test_todo.py @@ -0,0 +1 @@ +"""Main package tests""" \ No newline at end of file From 2dfd317cc76caf5f88b3aa80e0fb98d24b939688 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Mon, 26 Jan 2026 18:30:32 -0800 Subject: [PATCH 10/12] update : test_todo updated. --- tests/test_todo.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/test_todo.py b/tests/test_todo.py index 73da749..15e37cf 100644 --- a/tests/test_todo.py +++ b/tests/test_todo.py @@ -1 +1,6 @@ -"""Main package tests""" \ No newline at end of file +"""Main package tests""" + +TEST_CASE_NAME = "TODO tests" + +def test_todo(): + pass From 02d29b32da283a4c8c1f63a188cd276a718b9527 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Mon, 26 Jan 2026 18:34:16 -0800 Subject: [PATCH 11/12] update : codecov upload commented out. --- .github/workflows/test.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5bccec6..2458eaa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,11 +40,12 @@ jobs: - name: Test with pytest run: | python -m pytest . --cov=TODO --cov-report=term - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - fail_ci_if_error: true - token: ${{ secrets.CODECOV_TOKEN }} + #### TODO: uncomment below after adding CODECOV_TOKEN to repository #### + # - name: Upload coverage to Codecov + # uses: codecov/codecov-action@v4 + # with: + # fail_ci_if_error: true + # token: ${{ secrets.CODECOV_TOKEN }} if: matrix.python-version == env.TEST_PYTHON_VERSION && matrix.os == env.TEST_OS - name: Vulture, Bandit and Pydocstyle tests run: | From 8031d8507fe6fe4b3c80507d82722074f4732635 Mon Sep 17 00:00:00 2001 From: Sadra Sabouri Date: Mon, 26 Jan 2026 18:36:42 -0800 Subject: [PATCH 12/12] change : `macos-13` changed to `macos-15-intel`. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2458eaa..06efcd3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-22.04, windows-2022, macOS-13] + os: [ubuntu-22.04, windows-2022, macos-15-intel] python-version: [3.7, 3.8, 3.9, 3.10.5, 3.11.0, 3.12.0, 3.13.0] steps: