18 Commits

Author SHA1 Message Date
tsunyoku 642491f410 attempt to fix macos builds with newer setup-python 2024-09-01 17:20:36 +01:00
Josh Smith c9f1a72dc8 Create CODEOWNERS 2024-06-15 19:30:50 -04:00
tsunyoku d4f712e826 bump akatsuki-pp 2024-06-01 00:43:47 +01:00
tsunyoku a8cd1bc89d bump akatsuki-pp 2024-05-31 23:07:09 +01:00
tsunyoku e5bd157c62 bump akatsuki-pp 2024-05-31 22:44:31 +01:00
James Wilson 63e32758c4 update pp crate (#3)
* update pp crate

* update crate version

* update pyproject version
2024-05-12 01:05:22 +01:00
tsunyoku 4b2f5f5ba7 update pp version 2024-04-14 14:46:28 +01:00
tsunyoku 068f538643 update pyproject file 2023-11-16 20:39:40 +00:00
tsunyoku b1b647d1ea hotfix 2023-11-16 20:24:37 +00:00
James fdd668da2b fix pyproject version 2023-11-16 19:49:39 +00:00
tsunyoku 618c33486d deploy new pp version 2023-11-16 19:36:20 +00:00
tsunyoku cc222094b6 v0.9.8: fix typing pt 2 2023-09-23 23:35:49 +01:00
tsunyoku c881e301a4 v0.9.7: typing fixes 2023-09-23 23:21:18 +01:00
tsunyoku 56d7543627 v0.9.6: improve python typing 2023-09-23 22:53:10 +01:00
James 8b7da57138 Merge pull request #2 from aeongdesu/main
ci: update action packages, support linux aarch64
2023-09-22 08:23:47 +01:00
aeongdesu eb6f8e9946 chore: update actions/setup-python package 2023-09-07 09:38:14 +09:00
aeongdesu 326007bfd0 chore: update action packages 2023-09-07 09:29:00 +09:00
aeongdesu 1908302278 feat: support linux aarch64 2023-09-07 09:22:11 +09:00
8 changed files with 205 additions and 30 deletions
+10 -18
View File
@@ -14,20 +14,16 @@ jobs:
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11'] python_version: ['3.7', '3.8', '3.9', '3.10', '3.11']
steps: steps:
- name: Checkout project - name: Checkout project
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v5.1.1
with: with:
python-version: ${{ matrix.python_version }} python-version: ${{ matrix.python_version }}
architecture: x64 architecture: x64
- name: Rust setup - name: Rust setup
uses: actions-rs/toolchain@v1 uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
profile: minimal
default: true
- name: Build wheels - x86_64 - name: Build wheels - x86_64
uses: PyO3/maturin-action@v1 uses: PyO3/maturin-action@v1
@@ -64,20 +60,16 @@ jobs:
target: [x64, x86] target: [x64, x86]
steps: steps:
- name: Checkout project - name: Checkout project
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v5.1.1
with: with:
python-version: ${{ matrix.python_version }} python-version: ${{ matrix.python_version }}
architecture: ${{ matrix.target }} architecture: ${{ matrix.target }}
- name: Rust setup - name: Rust setup
uses: actions-rs/toolchain@v1 uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
profile: minimal
default: true
- name: Build wheels - name: Build wheels
uses: PyO3/maturin-action@v1 uses: PyO3/maturin-action@v1
@@ -101,13 +93,13 @@ jobs:
strategy: strategy:
matrix: matrix:
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11'] python_version: ['3.7', '3.8', '3.9', '3.10', '3.11']
target: [x86_64, i686] target: [x86_64, i686, aarch64]
steps: steps:
- name: Checkout project - name: Checkout project
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v5.1.1
with: with:
python-version: ${{ matrix.python_version }} python-version: ${{ matrix.python_version }}
architecture: x64 architecture: x64
@@ -145,7 +137,7 @@ jobs:
name: wheels name: wheels
- name: Python setup - name: Python setup
uses: actions/setup-python@v2 uses: actions/setup-python@v5.1.1
with: with:
python-version: ${{ matrix.python_version }} python-version: ${{ matrix.python_version }}
+6
View File
@@ -0,0 +1,6 @@
* @tsunyoku @cmyui
# Infrastructure
/.github/* @cmyui
/tf/* @cmyui
/chart/* @cmyui
Generated
+3 -3
View File
@@ -4,12 +4,12 @@ version = 3
[[package]] [[package]]
name = "akatsuki-pp" name = "akatsuki-pp"
version = "0.9.4" version = "1.0.1"
source = "git+https://github.com/osuAkatsuki/akatsuki-pp-rs?rev=764da0dbf42ed80441acf99d070aaedabaed4b75#764da0dbf42ed80441acf99d070aaedabaed4b75" source = "git+https://github.com/osuAkatsuki/akatsuki-pp-rs?rev=b96019f50aa7d09bcbde60016481a69df04315e4#b96019f50aa7d09bcbde60016481a69df04315e4"
[[package]] [[package]]
name = "akatsuki-pp-py" name = "akatsuki-pp-py"
version = "0.9.4" version = "1.0.5"
dependencies = [ dependencies = [
"akatsuki-pp", "akatsuki-pp",
"pyo3", "pyo3",
+2 -2
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "akatsuki-pp-py" name = "akatsuki-pp-py"
version = "0.9.5" version = "1.0.5"
description = "osu! difficulty and pp calculation for all modes" description = "osu! difficulty and pp calculation for all modes"
authors = ["Max Ohn <ohn.m@hotmail.de>", "tsunyoku <tsunyoku@gmail.com>"] authors = ["Max Ohn <ohn.m@hotmail.de>", "tsunyoku <tsunyoku@gmail.com>"]
license = "MIT" license = "MIT"
@@ -12,7 +12,7 @@ crate-type = ["cdylib"]
[dependencies] [dependencies]
pyo3 = { version = "0.17", features = ["extension-module", "macros"] } pyo3 = { version = "0.17", features = ["extension-module", "macros"] }
akatsuki-pp = { git = "https://github.com/osuAkatsuki/akatsuki-pp-rs", rev = "764da0dbf42ed80441acf99d070aaedabaed4b75" } akatsuki-pp = { git = "https://github.com/osuAkatsuki/akatsuki-pp-rs", rev = "b96019f50aa7d09bcbde60016481a69df04315e4" }
[profile.release] [profile.release]
lto = "fat" lto = "fat"
+167 -1
View File
@@ -1,3 +1,6 @@
from typing import Optional
from typing import List
class Beatmap: class Beatmap:
""" """
A class containing a parsed beatmap. A class containing a parsed beatmap.
@@ -25,7 +28,8 @@ class Beatmap:
Throws an exception if the map could not be parsed or an invalid kwarg was given Throws an exception if the map could not be parsed or an invalid kwarg was given
""" """
def __init__(self, **kwargs) -> None: ... def __init__(self, **kwargs) -> None:
...
def set_ar(self, ar: float) -> None: def set_ar(self, ar: float) -> None:
""" """
@@ -230,6 +234,45 @@ class BeatmapAttributes:
Amount of spinners Amount of spinners
""" """
@property
def ar(self) -> float: ...
@property
def cs(self) -> float: ...
@property
def hp(self) -> float: ...
@property
def od(self) -> float: ...
@property
def ar_hit_window(self) -> float: ...
@property
def od_hit_window(self) -> float: ...
@property
def clock_rate(self) -> float: ...
@property
def bpm(self) -> float: ...
@property
def mode(self) -> int: ...
@property
def version(self) -> int: ...
@property
def n_circles(self) -> int: ...
@property
def n_sliders(self) -> int: ...
@property
def n_spinners(self) -> int: ...
class DifficultyAttributes: class DifficultyAttributes:
""" """
@@ -283,6 +326,69 @@ class DifficultyAttributes:
Amount of tiny droplets (C) Amount of tiny droplets (C)
""" """
@property
def mode(self) -> int: ...
@property
def stars(self) -> float: ...
@property
def max_combo(self) -> int: ...
@property
def aim(self) -> Optional[float]: ...
@property
def speed(self) -> Optional[float]: ...
@property
def flashlight(self) -> Optional[float]: ...
@property
def slider_factor(self) -> Optional[float]: ...
@property
def speed_note_count(self) -> Optional[float]: ...
@property
def ar(self) -> Optional[float]: ...
@property
def od(self) -> Optional[float]: ...
@property
def n_circles(self) -> Optional[int]: ...
@property
def n_sliders(self) -> Optional[int]: ...
@property
def n_spinners(self) -> Optional[int]: ...
@property
def stamina(self) -> Optional[float]: ...
@property
def color(self) -> Optional[float]: ...
@property
def rhythm(self) -> Optional[float]: ...
@property
def peak(self) -> Optional[float]: ...
@property
def hit_window(self) -> Optional[float]: ...
@property
def n_fruits(self) -> Optional[int]: ...
@property
def n_droplets(self) -> Optional[int]: ...
@property
def n_tiny_droplets(self) -> Optional[int]: ...
class PerformanceAttributes: class PerformanceAttributes:
""" """
@@ -312,6 +418,33 @@ class PerformanceAttributes:
Difficulty based portion of the performance points (T, M) Difficulty based portion of the performance points (T, M)
""" """
@property
def mode(self) -> int: ...
@property
def pp(self) -> float: ...
@property
def difficulty(self) -> DifficultyAttributes: ...
@property
def pp_acc(self) -> Optional[float]: ...
@property
def pp_aim(self) -> Optional[float]: ...
@property
def pp_speed(self) -> Optional[float]: ...
@property
def pp_flashlight(self) -> Optional[float]: ...
@property
def effective_miss_count(self) -> Optional[float]: ...
@property
def pp_difficulty(self) -> Optional[float]: ...
class Strains: class Strains:
""" """
@@ -344,3 +477,36 @@ class Strains:
`'strains': Optional[List[float]]` `'strains': Optional[List[float]]`
Strain values (M) Strain values (M)
""" """
@property
def mode(self) -> int: ...
@property
def section_len(self) -> float: ...
@property
def aim(self) -> Optional[List[float]]: ...
@property
def aim_no_sliders(self) -> Optional[List[float]]: ...
@property
def speed(self) -> Optional[List[float]]: ...
@property
def flashlight(self) -> Optional[List[float]]: ...
@property
def color(self) -> Optional[List[float]]: ...
@property
def stamina(self) -> Optional[List[float]]: ...
@property
def rhythm(self) -> Optional[List[float]]: ...
@property
def movement(self) -> Optional[List[float]]: ...
@property
def strains(self) -> Optional[List[float]]: ...
+5 -2
View File
@@ -4,7 +4,7 @@ build-backend = "maturin"
[project] [project]
name = "akatsuki-pp-py" name = "akatsuki-pp-py"
version = "0.9.5" version = "1.0.5"
requires-python = ">=3.7" requires-python = ">=3.7"
description = "osu! difficulty and pp calculation for all modes" description = "osu! difficulty and pp calculation for all modes"
classifiers = [ classifiers = [
@@ -17,7 +17,10 @@ classifiers = [
"Programming Language :: Python :: Implementation :: PyPy", "Programming Language :: Python :: Implementation :: PyPy",
] ]
packages = [{ include = "akatsuki_pp_py" }] packages = [{ include = "akatsuki_pp_py" }]
authors = [{ name = "Max Ohn", email = "ohn.m@hotmail.de" }, { name = "tsunyoku", email = "tsunyoku@gmail.com" }] authors = [
{ name = "Max Ohn", email = "ohn.m@hotmail.de" },
{ name = "tsunyoku", email = "tsunyoku@gmail.com" },
]
readme = "README.md" readme = "README.md"
license = { file = "LICENSE" } license = { file = "LICENSE" }
repository = "https://github.com/osuAkatsuki/akatsuki-pp-py" repository = "https://github.com/osuAkatsuki/akatsuki-pp-py"
+2
View File
@@ -268,6 +268,8 @@ impl PyCalculator {
n_spinners: attrs.difficulty.n_spinners, n_spinners: attrs.difficulty.n_spinners,
stars: attrs.difficulty.stars, stars: attrs.difficulty.stars,
max_combo: attrs.difficulty.max_combo, max_combo: attrs.difficulty.max_combo,
aim_difficult_strain_count: 0.0,
speed_difficult_strain_count: 0.0,
}, },
pp: attrs.pp, pp: attrs.pp,
pp_acc: attrs.pp_acc, pp_acc: attrs.pp_acc,
+7 -1
View File
@@ -1,10 +1,10 @@
use std::fmt::{Debug, Display, Formatter, Result as FmtResult}; use std::fmt::{Debug, Display, Formatter, Result as FmtResult};
use pyo3::{pyclass, pymethods};
use akatsuki_pp::{ use akatsuki_pp::{
catch::CatchDifficultyAttributes, mania::ManiaDifficultyAttributes, catch::CatchDifficultyAttributes, mania::ManiaDifficultyAttributes,
osu::OsuDifficultyAttributes, taiko::TaikoDifficultyAttributes, DifficultyAttributes, osu::OsuDifficultyAttributes, taiko::TaikoDifficultyAttributes, DifficultyAttributes,
}; };
use pyo3::{pyclass, pymethods};
#[pyclass(name = "DifficultyAttributes")] #[pyclass(name = "DifficultyAttributes")]
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
@@ -91,6 +91,8 @@ impl Debug for BorrowedDifficultyAttributes<'_> {
n_spinners, n_spinners,
stars, stars,
max_combo, max_combo,
aim_difficult_strain_count,
speed_difficult_strain_count,
} = attrs; } = attrs;
debug.field("mode", &0_u8); debug.field("mode", &0_u8);
@@ -109,6 +111,8 @@ impl Debug for BorrowedDifficultyAttributes<'_> {
n_spinners, n_spinners,
stars, stars,
max_combo, max_combo,
aim_difficult_strain_count,
speed_difficult_strain_count,
} }
} }
Self::Taiko(attrs) => { Self::Taiko(attrs) => {
@@ -230,4 +234,6 @@ getters! {
n_tiny_droplets as usize: (Catch), n_tiny_droplets as usize: (Catch),
ar as f64: (Osu, Catch), ar as f64: (Osu, Catch),
hit_window as f64: (Taiko, Mania), hit_window as f64: (Taiko, Mania),
aim_difficult_strain_count as f64: (Osu),
speed_difficult_strain_count as f64: (Osu),
} }