Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/build-and-publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Copyright The FMS HF Tuning Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Build and Publish FMS-hf-tuning Library

on:
Comment thread
jbusche marked this conversation as resolved.
release:
types: [published]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- setup: "3.11"
tox: "py311"

environment:
name: pypi
url: https://pypi.org/p/fms-hf-tuning
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version.setup }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version.setup }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r setup_requirements.txt
- name: Build and test with tox
run: tox -e ${{ matrix.python-version.tox }}
- name: Build and check wheel package
Comment thread
jbusche marked this conversation as resolved.
run:
tox -e build,twinecheck
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
Comment thread
jbusche marked this conversation as resolved.
7 changes: 7 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ We require new unit tests to be contributed with any new functionality added.

Before sending pull requests, make sure your changes pass formatting, linting and unit tests. These checks will run with the pull request builds. Alternatively, you can run the checks manually on your local machine [as specified below](#development).

#### Dependencies
If additional new Python module dependencies are required, think about where to put them:

- If they're required for fms-hf-tuning, then append them to the end of the requirements.txt file.
Comment thread
jbusche marked this conversation as resolved.
- If they're optional dependencies for additional functionality, then put them in the pyproject.toml file like were done for [flash-attn](https://github.com/foundation-model-stack/fms-hf-tuning/blob/main/pyproject.toml#L26) or [aim](https://github.com/foundation-model-stack/fms-hf-tuning/blob/main/pyproject.toml#L27).
- If it's an additional dependency for development, then add it to the [dev](https://github.com/foundation-model-stack/fms-hf-tuning/blob/main/pyproject.toml#L25) dependencies.

#### Code Review

Once you've [created a pull request](#how-can-i-contribute), maintainers will review your code and may make suggestions to fix before merging. It will be easier for your pull request to receive reviews if you consider the criteria the reviewers follow while working. Remember to:
Expand Down
21 changes: 16 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
[build-system]
build-backend = "setuptools.build_meta"
requires = [
"setuptools>=61",
"setuptools>=60",
"setuptools-scm>=8.0"]

[project]
name = "fms-hf-tuning"
version = "0.0.1"
dynamic = ["version", "dependencies"]
description = "FMS HF Tuning"
authors = [
{name = "Sukriti Sharma", email = "sukriti.sharma4@ibm.com"},
Expand All @@ -16,11 +17,14 @@ readme = "README.md"
requires-python = "~=3.9"
keywords = ['fms-hf-tuning', 'python', 'tuning']
classifiers=[
"License :: OSI Approved :: Apache Software License"
"License :: OSI Approved :: Apache Software License",
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
]

dynamic = ["dependencies"]

[project.optional-dependencies]
dev = ["wheel", "packaging", "ninja", "scikit-learn>=1.0, <2.0"]
flash-attn = ["flash-attn"]
Expand All @@ -29,6 +33,13 @@ aim = ["aim==3.18.1"]
[tool.setuptools.dynamic]
dependencies = {file = ["requirements.txt"]}

[tool.setuptools.packages.find]
exclude = ["tests", "tests.*"]
namespaces = false

[tool.setuptools_scm]
version_file = "tuning/_version.py"
Comment thread
jbusche marked this conversation as resolved.

[project.urls]
Homepage = "https://github.com/foundation-model-stack/fms-hf-tuning"
Repository = "https://github.com/foundation-model-stack/fms-hf-tuning"
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Comment thread
jbusche marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@
# Third Party
from setuptools import find_packages, setup

setup(name="fms-hf-tuning", version="0.0.1", packages=find_packages())
setup(name="fms-hf-tuning", packages=find_packages())
3 changes: 2 additions & 1 deletion setup_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
pre-commit>=3.0.4,<4.0
pylint>=2.16.2,<4.0
pydeps>=1.12.12,<2
tox>=4.4.2,<5
tox>=4.4.2,<5
build>=0.10.0,<2.0
15 changes: 15 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ description = run unit tests
deps =
pytest>=7
-r requirements.txt
wheel>=0.38.4
Comment thread
jbusche marked this conversation as resolved.
commands =
pytest {posargs:tests}

Expand All @@ -22,3 +23,17 @@ deps = pylint>=2.16.2,<=3.1.0
-r requirements.txt
commands = pylint tuning scripts/*.py build/*.py tests
allowlist_externals = pylint

[testenv:build]
description = build wheel
deps =
build
commands = python -m build -w
skip_install = True

[testenv:twinecheck]
description = check wheel
deps =
twine
commands = twine check dist/*
skip_install = True