Skip to content

Commit fceaf75

Browse files
authored
Merge pull request #19 from robotpy/semiwrap
Migrate to semiwrap
2 parents 13aae3b + 7176083 commit fceaf75

File tree

11 files changed

+95
-70
lines changed

11 files changed

+95
-70
lines changed

.gitignore

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*.pyc
1+
*.py[ciod]
22
*.so
33
__pycache__
44

@@ -7,24 +7,14 @@ __pycache__
77
.vscode
88

99
*.egg-info
10-
build
11-
dist
10+
/build
11+
/dist
12+
/lib
1213

1314
/playingwithfusion/version.py
14-
/playingwithfusion/_init_playingwithfusion.py
15-
/playingwithfusion/include
16-
/playingwithfusion/lib
17-
/playingwithfusion/rpy-include
18-
/playingwithfusion/pkgcfg.py
19-
20-
/playingwithfusion/_pwf_driver/_init_playingwithfusion_driver.py
21-
/playingwithfusion/_pwf_driver/include
22-
/playingwithfusion/_pwf_driver/lib
23-
/playingwithfusion/_pwf_driver/rpy-include
24-
/playingwithfusion/_pwf_driver/pkgcfg.py
25-
15+
/playingwithfusion/_init__playingwithfusion.py
16+
/playingwithfusion/trampolines
17+
/playingwithfusion/playingwithfusion.pc
2618

2719
*.dylib
2820
*.dll
29-
30-
rev/rpy-include

meson.build

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
project('robotpy-playingwithfusion', ['cpp'],
2+
default_options: ['warning_level=1', 'cpp_std=c++20',
3+
'b_colorout=auto', 'optimization=2', 'b_pie=true'])
4+
5+
subdir('semiwrap')
6+
7+
playingwithfusion_sources += files(
8+
'playingwithfusion/pwf.cpp',
9+
)
10+
11+
#
12+
# Static link
13+
#
14+
15+
cpp = meson.get_compiler('cpp')
16+
libs_path = meson.current_source_dir() + '/lib/lib'
17+
18+
playingwithfusion_deps += [
19+
cpp.find_library('PlayingWithFusionDriver', dirs: libs_path),
20+
cpp.find_library('PlayingWithFusion', dirs: libs_path),
21+
]
22+
23+
subdir('semiwrap/modules')

playingwithfusion/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from . import _init_playingwithfusion
1+
from . import _init__playingwithfusion
22
from .version import version as __version__
33

4-
# autogenerated by 'robotpy-build create-imports playingwithfusion playingwithfusion._playingwithfusion'
4+
# autogenerated by 'semiwrap create-imports playingwithfusion playingwithfusion._playingwithfusion'
55
from ._playingwithfusion import CANVenom, TMD37003, TimeOfFlight
66

77
__all__ = ["CANVenom", "TMD37003", "TimeOfFlight"]
88

9-
del _init_playingwithfusion
9+
del _init__playingwithfusion

playingwithfusion/pwf.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
#include <rpygen_wrapper.hpp>
1+
#include <semiwrap_init.playingwithfusion._playingwithfusion.hpp>
22

3-
RPYBUILD_PYBIND11_MODULE(m) { initWrapper(m); }
3+
SEMIWRAP_PYBIND11_MODULE(m) { initWrapper(m); }
File renamed without changes.

pyproject.toml

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,80 @@
1-
[tool.robotpy-build.metadata]
1+
[build-system]
2+
build-backend = "hatchling.build"
3+
requires = [
4+
"hatchling",
5+
"hatch-vcs",
6+
"semiwrap~=0.1",
7+
"hatch-meson~=0.1.0b2",
8+
"hatch-robotpy~=0.2.0",
9+
"wpilib~=2025.3.2.2",
10+
]
11+
12+
13+
[project]
214
name = "robotpy-playingwithfusion"
15+
dynamic = ["version"]
316
description = "PlayingWithFusion for RobotPy"
4-
author = "RobotPy Development Team"
5-
author_email = "robotpy@googlegroups.com"
6-
url = "https://github.com/robotpy/robotpy-playingwithfusion"
717
license = "BSD-3-Clause"
8-
install_requires = [
18+
dependencies = [
919
"robotpy-wpiutil<2026.0.0,>=2025.3.2",
1020
"robotpy-wpimath<2026.0.0,>=2025.3.2",
1121
"wpilib<2026.0.0,>=2025.3.2",
1222
]
1323

14-
[build-system]
15-
requires = [
16-
"robotpy-build~=2025.1.0",
17-
"robotpy-wpiutil<2026.0.0,>=2025.3.2",
18-
"robotpy-wpimath<2026.0.0,>=2025.3.2",
19-
"wpilib<2026.0.0,>=2025.3.2",
20-
]
24+
[[project.authors]]
25+
name = "RobotPy Development Team"
26+
email = "robotpy@googlegroups.com"
27+
28+
[project.urls]
29+
"Source code" = "https://github.com/robotpy/robotpy-playingwithfusion"
30+
2131

22-
[tool.robotpy-build]
23-
base_package = "playingwithfusion"
2432

25-
[tool.robotpy-build.wrappers."playingwithfusion._pwf_driver".maven_lib_download]
33+
[tool.hatch.version]
34+
source = "vcs"
35+
36+
[tool.hatch.build.hooks.vcs]
37+
version-file = "playingwithfusion/version.py"
38+
39+
[tool.hatch.build.targets.wheel]
40+
packages = ["playingwithfusion"]
41+
42+
43+
[[tool.hatch.build.hooks.robotpy.maven_lib_download]]
2644
artifact_id = "PlayingWithFusion-driver"
2745
group_id = "com.playingwithfusion.frc"
2846
repo_url = "https://www.playingwithfusion.com/frc/maven"
2947
version = "2025.01.23"
48+
staticlibs = ["PlayingWithFusionDriver"]
49+
extract_to = "lib"
3050

31-
libs = ["PlayingWithFusionDriver"]
32-
33-
[tool.robotpy-build.wrappers."playingwithfusion._pwf_driver"]
34-
name = "playingwithfusion_driver"
35-
depends = ["wpilib_core", "wpiHal", "wpiutil"]
36-
37-
[tool.robotpy-build.wrappers."playingwithfusion".maven_lib_download]
51+
[[tool.hatch.build.hooks.robotpy.maven_lib_download]]
3852
artifact_id = "PlayingWithFusion-cpp"
3953
group_id = "com.playingwithfusion.frc"
4054
repo_url = "https://www.playingwithfusion.com/frc/maven"
4155
version = "2025.01.23"
56+
staticlibs = ["PlayingWithFusion"]
57+
extract_to = "lib"
4258

43-
libs = ["PlayingWithFusion"]
4459

45-
[tool.robotpy-build.wrappers."playingwithfusion"]
60+
[tool.hatch.build.hooks.semiwrap]
61+
62+
[tool.hatch.build.hooks.meson]
63+
64+
65+
[tool.semiwrap]
66+
update_init = ["playingwithfusion"]
67+
68+
[tool.semiwrap.extension_modules."playingwithfusion._playingwithfusion"]
4669
name = "playingwithfusion"
47-
sources = [
48-
"playingwithfusion/pwf.cpp"
49-
]
5070

51-
depends = ["wpilibc", "wpilib_core", "wpiHal", "wpiutil", "playingwithfusion_driver"]
71+
depends = ["wpilib"]
5272

53-
generate = [
54-
{ CANVenom = "CANVenom.h" },
55-
{ TMD37003 = "TMD37003.h" },
56-
{ TimeOfFlight = "TimeOfFlight.h" },
73+
includes = [
74+
"lib/include"
5775
]
5876

59-
generation_data = "gen"
60-
77+
[tool.semiwrap.extension_modules."playingwithfusion._playingwithfusion".headers]
78+
CANVenom = "CANVenom.h"
79+
TMD37003 = "TMD37003.h"
80+
TimeOfFlight = "TimeOfFlight.h"

semiwrap/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/meson.build
2+
/modules/meson.build
3+
/trampolines/meson.build

gen/CANVenom.yml renamed to semiwrap/CANVenom.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
---
21

32
classes:
4-
CANVenom:
5-
shared_ptr: true
3+
pwf::CANVenom:
64
ignored_bases:
75
- wpi::SendableHelper<CANVenom>
86
enums:

gen/TMD37003.yml renamed to semiwrap/TMD37003.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
---
21

32
classes:
4-
TMD37003:
5-
shared_ptr: true
3+
pwf::TMD37003:
64
methods:
75
TMD37003:
86
ConfigureColorSense:

gen/TimeOfFlight.yml renamed to semiwrap/TimeOfFlight.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
---
21

32
classes:
4-
TimeOfFlight:
5-
shared_ptr: true
3+
pwf::TimeOfFlight:
64
ignored_bases:
75
- wpi::SendableHelper<TimeOfFlight>
86
enums:

0 commit comments

Comments
 (0)