1 Commits

Author SHA1 Message Date
tsunyoku cf4275c363 fix: remove 2019 usage 2023-01-22 18:22:17 +00:00
7 changed files with 48 additions and 166 deletions
+34 -34
View File
@@ -9,27 +9,28 @@ on:
jobs: jobs:
macos: macos:
runs-on: macos-latest runs-on: macos-latest
strategy:
matrix:
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11']
steps: steps:
- name: Checkout project - name: Checkout project
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v2
with: with:
python-version: ${{ matrix.python_version }} python-version: 3.9
architecture: x64 architecture: x64
- name: Rust setup - name: Rust setup
uses: dtolnay/rust-toolchain@stable uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
- name: Build wheels - x86_64 - name: Build wheels - x86_64
uses: PyO3/maturin-action@v1 uses: messense/maturin-action@v1
with: with:
target: x86_64 target: x86_64
args: --release --out dist --sdist args: --release --out dist
- name: Install built wheel - x86_64 - name: Install built wheel - x86_64
run: | run: |
@@ -37,10 +38,10 @@ jobs:
python -c "import akatsuki_pp_py" python -c "import akatsuki_pp_py"
- name: Build wheels - universal2 - name: Build wheels - universal2
uses: PyO3/maturin-action@v1 uses: messense/maturin-action@v1
with: with:
args: --release --universal2 --out dist args: --release --universal2 --out dist --no-sdist
- name: Install built wheel - universal2 - name: Install built wheel - universal2
run: | run: |
pip install akatsuki_pp_py --no-index --find-links dist --force-reinstall pip install akatsuki_pp_py --no-index --find-links dist --force-reinstall
@@ -56,26 +57,29 @@ jobs:
runs-on: windows-latest runs-on: windows-latest
strategy: strategy:
matrix: matrix:
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11']
target: [x64, x86] target: [x64, x86]
steps: steps:
- name: Checkout project - name: Checkout project
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v2
with: with:
python-version: ${{ matrix.python_version }} python-version: 3.9
architecture: ${{ matrix.target }} architecture: ${{ matrix.target }}
- name: Rust setup - name: Rust setup
uses: dtolnay/rust-toolchain@stable uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
- name: Build wheels - name: Build wheels
uses: PyO3/maturin-action@v1 uses: messense/maturin-action@v1
with: with:
target: ${{ matrix.target }} target: ${{ matrix.target }}
args: --release --out dist args: --release --out dist --no-sdist
- name: Install built wheel - name: Install built wheel
run: | run: |
@@ -89,27 +93,26 @@ jobs:
path: dist path: dist
linux: linux:
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
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@v4 uses: actions/checkout@v3
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v2
with: with:
python-version: ${{ matrix.python_version }} python-version: 3.9
architecture: x64 architecture: x64
- name: Build wheels - name: Build wheels
uses: PyO3/maturin-action@v1 uses: messense/maturin-action@v1
with: with:
target: ${{ matrix.target }} target: ${{ matrix.target }}
manylinux: auto manylinux: auto
args: --release --out dist -i ${{ matrix.python_version }} args: --release --out dist --no-sdist
- name: Install built wheel - name: Install built wheel
if: matrix.target == 'x86_64' if: matrix.target == 'x86_64'
@@ -126,9 +129,6 @@ jobs:
release: release:
name: Release name: Release
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11']
needs: [ macos, windows, linux ] needs: [ macos, windows, linux ]
steps: steps:
- name: Get artifacts - name: Get artifacts
@@ -137,9 +137,9 @@ jobs:
name: wheels name: wheels
- name: Python setup - name: Python setup
uses: actions/setup-python@v4 uses: actions/setup-python@v2
with: with:
python-version: ${{ matrix.python_version }} python-version: 3.9
- name: Publish to PyPi - name: Publish to PyPi
env: env:
Generated
+3 -3
View File
@@ -4,12 +4,12 @@ version = 3
[[package]] [[package]]
name = "akatsuki-pp" name = "akatsuki-pp"
version = "0.9.4" version = "0.9.3"
source = "git+https://github.com/osuAkatsuki/akatsuki-pp-rs?rev=764da0dbf42ed80441acf99d070aaedabaed4b75#764da0dbf42ed80441acf99d070aaedabaed4b75" source = "git+https://github.com/osuAkatsuki/akatsuki-pp-rs#4140dc70840044d9d4313731ce04c5793098ed62"
[[package]] [[package]]
name = "akatsuki-pp-py" name = "akatsuki-pp-py"
version = "0.9.4" version = "0.9.3"
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.6" version = "0.9.3"
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 = "61cb1564b4fdbffb21748b35f58805327dc4aac4" }
[profile.release] [profile.release]
lto = "fat" lto = "fat"
+1 -59
View File
@@ -1,6 +1,3 @@
from typing import Optional
from typing import List
class Beatmap: class Beatmap:
""" """
A class containing a parsed beatmap. A class containing a parsed beatmap.
@@ -28,8 +25,7 @@ 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:
""" """
@@ -233,19 +229,6 @@ class BeatmapAttributes:
`'n_spinners': int` `'n_spinners': int`
Amount of spinners Amount of spinners
""" """
ar: float
cs: float
hp: float
od: float
ar_hit_window: float
od_hit_window: float
clock_rate: float
bpm: float
mode: int
version: int
n_circles: int
n_sliders: int
n_spinners: int
class DifficultyAttributes: class DifficultyAttributes:
@@ -299,27 +282,6 @@ class DifficultyAttributes:
`'n_tiny_droplets': Optional[int]` `'n_tiny_droplets': Optional[int]`
Amount of tiny droplets (C) Amount of tiny droplets (C)
""" """
mode: int
stars: float
max_combo: int
aim: Optional[float]
speed: Optional[float]
flashlight: Optional[float]
slider_factor: Optional[float]
speed_note_count: Optional[float]
ar: Optional[float]
od: Optional[float]
n_circles: Optional[int]
n_sliders: Optional[int]
n_spinners: Optional[int]
stamina: Optional[float]
color: Optional[float]
rhythm: Optional[float]
peak: Optional[float]
hit_window: Optional[float]
n_fruits: Optional[int]
n_droplets: Optional[int]
n_tiny_droplets: Optional[int]
class PerformanceAttributes: class PerformanceAttributes:
@@ -349,15 +311,6 @@ class PerformanceAttributes:
`'pp_difficulty': Optional[float]` `'pp_difficulty': Optional[float]`
Difficulty based portion of the performance points (T, M) Difficulty based portion of the performance points (T, M)
""" """
mode: int
pp: float
difficulty: DifficultyAttributes
pp_acc: Optional[float]
pp_aim: Optional[float]
pp_speed: Optional[float]
pp_flashlight: Optional[float]
effective_miss_count: Optional[float]
pp_difficulty: Optional[float]
class Strains: class Strains:
@@ -391,14 +344,3 @@ class Strains:
`'strains': Optional[List[float]]` `'strains': Optional[List[float]]`
Strain values (M) Strain values (M)
""" """
mode: int
section_len: float
aim: Optional[List[float]]
aim_no_sliders: Optional[List[float]]
speed: Optional[List[float]]
flashlight: Optional[List[float]]
color: Optional[List[float]]
stamina: Optional[List[float]]
rhythm: Optional[List[float]]
movement: Optional[List[float]]
strains: Optional[List[float]]
+2 -2
View File
@@ -1,10 +1,10 @@
[build-system] [build-system]
requires = ["maturin>=0.14,<0.15"] requires = ["maturin>=0.12,<0.13", "setuptools", "setuptools-rust", "wheel"]
build-backend = "maturin" build-backend = "maturin"
[project] [project]
name = "akatsuki-pp-py" name = "akatsuki-pp-py"
version = "0.9.6" version = "0.9.3"
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 = [
+1 -65
View File
@@ -1,8 +1,4 @@
use akatsuki_pp::{ use akatsuki_pp::{AnyPP, AnyStars, DifficultyAttributes, GameMode};
osu::{OsuDifficultyAttributes, OsuPerformanceAttributes},
osu_2019::OsuPP,
AnyPP, AnyStars, DifficultyAttributes, GameMode, Mods, PerformanceAttributes,
};
use pyo3::{ use pyo3::{
exceptions::{PyTypeError, PyValueError}, exceptions::{PyTypeError, PyValueError},
pyclass, pymethods, pyclass, pymethods,
@@ -231,67 +227,7 @@ impl PyCalculator {
Ok(calc.calculate().into()) Ok(calc.calculate().into())
} }
fn performance_2019(&self, map: &PyBeatmap) -> PyResult<PyPerformanceAttributes> {
let mut calc = OsuPP::new(&map.inner);
set_calc! { calc, self:
mods,
combo,
n300,
n100,
n50,
passed_objects,
};
if let Some(n_misses) = self.n_misses {
calc = calc.misses(n_misses);
}
if let Some(acc) = self.acc {
calc = calc.accuracy(acc as f32);
}
let attrs = calc.calculate();
let new_attrs = OsuPerformanceAttributes {
difficulty: OsuDifficultyAttributes {
aim: attrs.difficulty.aim_strain,
speed: attrs.difficulty.speed_strain,
flashlight: 0.0,
slider_factor: 0.0,
speed_note_count: 0.0,
ar: attrs.difficulty.ar,
od: attrs.difficulty.od,
hp: attrs.difficulty.hp,
n_circles: attrs.difficulty.n_circles,
n_sliders: attrs.difficulty.n_sliders,
n_spinners: attrs.difficulty.n_spinners,
stars: attrs.difficulty.stars,
max_combo: attrs.difficulty.max_combo,
},
pp: attrs.pp,
pp_acc: attrs.pp_acc,
pp_aim: attrs.pp_aim,
pp_flashlight: attrs.pp_flashlight,
pp_speed: attrs.pp_speed,
effective_miss_count: attrs.effective_miss_count,
};
Ok(PerformanceAttributes::Osu(new_attrs).into())
}
fn performance(&self, map: &PyBeatmap) -> PyResult<PyPerformanceAttributes> { fn performance(&self, map: &PyBeatmap) -> PyResult<PyPerformanceAttributes> {
// criteria:
// - is relax
// - is osu!standard
// or mode is not specified and map is osu!standard, as that will be the inferred mode
if (self.mods.is_some() && self.mods.unwrap().rx())
&& ((self.mode.is_none() && map.inner.mode == GameMode::Osu)
|| self.mode == Some(GameMode::Osu))
{
return self.performance_2019(map);
}
let mut calc = AnyPP::new(&map.inner); let mut calc = AnyPP::new(&map.inner);
set_calc! { calc, self: set_calc! { calc, self:
+5 -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) => {