Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build Wheel Action #105

Merged
merged 3 commits into from
Apr 13, 2024
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:
jbusche marked this conversation as resolved.
Show resolved Hide 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
jbusche marked this conversation as resolved.
Show resolved Hide resolved
run:
tox -e build,twinecheck
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
jbusche marked this conversation as resolved.
Show resolved Hide 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.
jbusche marked this conversation as resolved.
Show resolved Hide 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"
jbusche marked this conversation as resolved.
Show resolved Hide 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
jbusche marked this conversation as resolved.
Show resolved Hide 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
jbusche marked this conversation as resolved.
Show resolved Hide 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
Loading