build/publish pipeline

This commit is contained in:
Stefan Harmuth 2023-11-11 15:02:27 +01:00
parent b0c6986511
commit 455bd34d3b
25 changed files with 92 additions and 96 deletions

View File

@ -1,18 +0,0 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 This job's status is ${{ gitea.status }}."

View File

@ -0,0 +1,50 @@
name: Publish to PyPI
on:
push:
tags:
- "*"
jobs:
publish:
name: Publish to PyPI
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.11.2"
- name: Setup Build Environment
run: python -m pip install --upgrade pip build
- name: Build Package
run: python -m build
- name: Publish Package
uses: pypa/gh-action-pypi-publish@v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
#name: Gitea Actions Demo
#run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
#on: [push]
#jobs:
# Explore-Gitea-Actions:
# runs-on: ubuntu-latest
# steps:
# - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
# - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
# - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
# - name: Check out repository code
# uses: actions/checkout@v3
# - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
# - run: echo "🖥️ The workflow is now ready to test your code on the runner."
# - name: List files in the repository
# run: |
# ls ${{ gitea.workspace }}
# - run: echo "🍏 This job's status is ${{ gitea.status }}."
#

View File

@ -208,8 +208,8 @@ If you develop a new program, and you want it to be of the greatest possible use
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
py-tools
Copyright (C) 2023 DF_Public
shs-tools
Copyright (C) 2023 Stefan Harmuth
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@ -221,7 +221,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
py-tools Copyright (C) 2023 DF_Public
shs-tools Copyright (C) 2023 Stefan Harmuth
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.

View File

@ -1,2 +1,8 @@
# py-tools
An assortment of helper functions, primarily developed for use in [Advent Of Code](https://adventofcode.com/)
## Installation
`pip install shs-tools`

View File

@ -1,56 +0,0 @@
from heapq import heappop, heappush
from tools.trees import MinHeap, BinarySearchTree
from tools.stopwatch import StopWatch
s = StopWatch()
h = []
for x in range(100_000):
heappush(h, x)
print("Heappush:", s.elapsed())
s.reset()
while h:
heappop(h)
print("Heappop:", s.elapsed())
s = StopWatch()
h = MinHeap()
for x in range(100_000):
h.add(x)
print("MinHeap.add():", s.elapsed())
s.reset()
while not h.empty():
h.pop()
print("MinHeap.pop():", s.elapsed())
s = StopWatch()
b = set()
for x in range(1_000_000):
b.add(x)
print("set.add():", s.elapsed())
s.reset()
for x in range(1_000_000):
_ = x in b
print("x in set:", s.elapsed())
s = StopWatch()
b = BinarySearchTree()
for x in range(1_000_000):
b.add(x)
print("AVL.add():", s.elapsed())
s.reset()
for x in range(1_000_000):
_ = x in b
print("x in AVL:", s.elapsed())
print("DFS/BFS Test")
b = BinarySearchTree()
for x in range(20):
b.add(x)
b.print()
print("DFS:")
for x in b.iter_depth_first():
print(x)
print("BFS:")
for x in b.iter_breadth_first():
print(x)

26
pyproject.toml Normal file
View File

@ -0,0 +1,26 @@
[build-system]
requires = ['setuptools', "wheel", "setuptools-git-versioning"]
build-backend = 'setuptools.build_meta'
[tool.setuptools-git-versioning]
enabled = true
[project]
dynamic = ['version']
name = "shs-tools"
authors = [
{ name="Stefan Harmuth", email="pennywise@drock.de" },
]
description = "An assortment of little helper functions"
readme = "README.md"
requires-python = ">=3.6"
classifiers = [
"Programming Language :: Python :: 3",
"Development Status :: 4 - Beta",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Operating System :: OS Independent",
]
[project.urls]
"homepage" = "https://git.domainforge.de/public/py-tools"
"Bug Tracker" = "https://git.domainforge.de/public/py-tools/issues"

View File

@ -1,12 +0,0 @@
from setuptools import setup
setup(
name='py-tools',
version='0.2',
packages=['tools'],
url='',
license='GPLv3',
author='Stefan Harmuth',
author_email='pennywise@drock.de',
description='Just some small tools to make life easier'
)

View File

@ -6,8 +6,8 @@ import requests
import time
import webbrowser
from bs4 import BeautifulSoup
from tools.datafiles import JSONFile
from tools.stopwatch import StopWatch
from src.tools.datafiles import JSONFile
from src.tools.stopwatch import StopWatch
from typing import Any, Callable, List, Tuple, Type, Union
from .tools import get_script_dir

View File

@ -278,7 +278,7 @@ class HexCoordinate(Coordinate):
def __init__(self, x: int, y: int, z: int):
assert (x + y + z) == 0
super().__init__(x, y, z)
super(HexCoordinate, self).__init__(x, y, z)
def get_length(self) -> int:
return (abs(self.x) + abs(self.y) + abs(self.z)) // 2
@ -321,7 +321,7 @@ class HexCoordinateF(HexCoordinate):
}
def __init__(self, x: int, y: int, z: int):
super().__init__(x, y, z)
super(HexCoordinateF, self).__init__(x, y, z)
class Shape:
@ -393,7 +393,7 @@ class Shape:
class Square(Shape):
def __init__(self, top_left, bottom_right):
super().__init__(top_left, bottom_right)
super(Square, self).__init__(top_left, bottom_right)
self.mode_3d = False
@ -401,4 +401,4 @@ class Cube(Shape):
def __init__(self, top_left, bottom_right):
if top_left.z is None or bottom_right.z is None:
raise ValueError("Both Coordinates need to be 3D")
super().__init__(top_left, bottom_right)
super(Cube, self).__init__(top_left, bottom_right)

View File

@ -1,6 +1,6 @@
from dataclasses import dataclass, field
from enum import Enum
from tools.lists import Queue, Stack
from src.tools.lists import Queue, Stack
from typing import Any, List, Union

View File