Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
fbaecde
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Oct 27, 2025
8bea5b1
Merge pull request #70 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Oct 27, 2025
0758868
Add relative-com constraint
psardin001 Oct 21, 2025
57c3350
Add ConstraintResult to problem
psardin001 Oct 21, 2025
caf17d1
Improve extract_vector utility with better error handling
psardin001 Oct 21, 2025
10ff231
Add partial center of mass computation functionality
psardin001 Oct 21, 2025
6cf05b4
Add constraint creation methods for transformations and relative COM
psardin001 Oct 21, 2025
704edf4
Add constraint application and configuration validation
psardin001 Oct 21, 2025
ab208f8
Add constraint and config-projector management to pyhpp problem
psardin001 Oct 21, 2025
8f23333
Add device utility methods: getCenterOfMass, rankInConfiguration, get…
psardin001 Oct 21, 2025
3d924e8
Add static stability constraint factory
psardin001 Oct 21, 2025
0b1ce7b
Update manipulation graph to use core ConstraintResult
psardin001 Oct 21, 2025
a4b5a4e
Add pyrene-on-the-ground benchmark using hpp-python
psardin001 Oct 21, 2025
67c0d20
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 21, 2025
27ea5b7
Add utility functions and homogeinize syntax
psardin001 Oct 27, 2025
ea8fc2b
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
e937204
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
f2e403f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
780c24c
Further homogenization
psardin001 Oct 27, 2025
6f51bc5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
531eba1
Remove ConstraintResult structure and use boost::python::tuple to fac…
psardin001 Oct 27, 2025
9878bc7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 27, 2025
238c62f
Improve api and fix test
psardin001 Oct 28, 2025
56e91fe
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 28, 2025
a9a3cc7
[Graph] Add access to PathValidation in transition.
florent-lamiraux Oct 30, 2025
0b55cf1
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Nov 3, 2025
07632dc
Merge pull request #72 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Nov 3, 2025
ef5e6f8
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Nov 10, 2025
daa3679
Merge pull request #73 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Nov 10, 2025
6dfec2d
[ConnectedComponent] Bind some more methods
florent-lamiraux Nov 12, 2025
cf90356
[Roadmap] Improve addNodeAndEdge(s)
florent-lamiraux Nov 12, 2025
e523278
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 12, 2025
84b0a1b
Add pyhpp coverage
psardin001 Oct 29, 2025
91ee3ec
Homogeinize object creation function, using constructors instead of s…
psardin001 Nov 13, 2025
e50f1fb
Add pyhpp::pinocchio::Device class so manipulation device can inherit…
psardin001 Nov 13, 2025
b047616
Revert "Add pyhpp coverage"
psardin001 Nov 13, 2025
8953aa8
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 13, 2025
ef6d4b0
Add missing device header file
psardin001 Nov 13, 2025
0d4d3c2
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 13, 2025
4df5cdc
flake.lock: Update
github-actions[bot] Nov 13, 2025
32d9903
Merge pull request #76 from humanoid-path-planner/update_flake_lock_a…
mergify[bot] Nov 13, 2025
019988b
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Nov 17, 2025
a3602fb
Merge pull request #77 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Nov 17, 2025
a803467
Bump actions/checkout from 5 to 6
dependabot[bot] Nov 24, 2025
e14f5df
Merge pull request #79 from humanoid-path-planner/dependabot/github_a…
mergify[bot] Nov 24, 2025
6aa32ab
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Nov 24, 2025
f8ae48b
Merge pull request #80 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Nov 24, 2025
c04b278
Add security margins helper python script for benchmarks
psardin001 Nov 18, 2025
e9c0689
Add random shortcut path optimizer
psardin001 Nov 18, 2025
3d895e5
Fix static stability constraint factory
psardin001 Nov 18, 2025
4e626ba
Fix getNodesConnectedByTransition prototype
psardin001 Nov 18, 2025
f3c7a4b
Add StatesPathFinder planner
psardin001 Nov 19, 2025
f931e53
Bind more path optimizers
psardin001 Nov 20, 2025
ad996a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 24, 2025
ca57cd3
[ConnectedComponent] Add equality comparison between connected compon…
florent-lamiraux Nov 26, 2025
9dc4a5d
[Roadmap] Add accessor to connected component of a node.
florent-lamiraux Nov 26, 2025
5a2b732
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Nov 26, 2025
16b5e27
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Dec 1, 2025
6489659
Merge pull request #82 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Dec 1, 2025
b03770a
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Dec 8, 2025
5fe1e32
Merge pull request #83 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Dec 8, 2025
3a5839b
flake.lock: Update
github-actions[bot] Dec 13, 2025
0fc4f94
Merge pull request #84 from humanoid-path-planner/update_flake_lock_a…
mergify[bot] Dec 13, 2025
f193493
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Dec 15, 2025
2c54478
Merge pull request #85 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Dec 15, 2025
ceceacb
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Dec 22, 2025
bd730a3
Merge pull request #86 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Dec 22, 2025
0723ca0
fix gripper-to-joint mapping in SecurityMargins and contact surfaces
psardin001 Jan 7, 2026
2a80995
Update pyhpp benchmarks for testing
psardin001 Nov 24, 2025
e5825e8
Fix test files referencing bad urdf file
psardin001 Jan 7, 2026
f1bc304
Add getGraphCapsule to allow external modules to extract cpp pointer
psardin001 Jan 7, 2026
9e90e34
Add file to test benchmarks examples easily
psardin001 Jan 7, 2026
453571a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 7, 2026
33d1db8
[Path] Bind method reverse.
florent-lamiraux Jan 9, 2026
fa88845
[TransitionPlanner] Bind method addPathOptimizer.
florent-lamiraux Jan 9, 2026
97a4857
[core] Bind SplineGradientBased_bezier optimizers.
florent-lamiraux Jan 9, 2026
59678f4
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 9, 2026
d577f6e
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jan 12, 2026
ee43336
Merge pull request #91 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Jan 12, 2026
0712193
flake.lock: Update
github-actions[bot] Jan 13, 2026
5e14554
Merge pull request #92 from humanoid-path-planner/update_flake_lock_a…
mergify[bot] Jan 13, 2026
795692c
Fix utility function that would incorrectly truncate values
psardin001 Jan 9, 2026
62981cf
fix constraint creation argument bad conversion
psardin001 Jan 14, 2026
7a31888
Add more tests and homogeinize testing process
psardin001 Jan 14, 2026
4e1c402
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 14, 2026
936a40e
fix typo and add missing test
psardin001 Jan 14, 2026
74b1180
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 14, 2026
1af352a
Add path serialization
psardin001 Jan 16, 2026
d83e21e
Fix auto generating pyhpp doc based on doxygen
psardin001 Jan 16, 2026
78ad536
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 16, 2026
a5557a0
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jan 19, 2026
48db243
Merge pull request #95 from humanoid-path-planner/pre-commit-ci-updat…
mergify[bot] Jan 19, 2026
fdffbdc
Add path serialization
psardin001 Jan 16, 2026
b630cef
Fix auto generating pyhpp doc based on doxygen
psardin001 Jan 16, 2026
b7fd95c
Expand DocClassMethod() usage and add it to relevant functions
psardin001 Jan 26, 2026
7defde4
Merge branch 'devel' into pr/path-serialization
psardin001 Jan 26, 2026
b9be7de
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 26, 2026
258230e
Merge branch 'devel' into pr/documentation
psardin001 Jan 26, 2026
afba5d2
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 26, 2026
dc9595b
Add static stability constraint creation tests
psardin001 Jan 19, 2026
2ef687b
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 26, 2026
8988da7
Remove duplicate converter runtime warning
psardin001 Jan 19, 2026
a8fc4c0
Remove problem-solver source file
psardin001 Jan 21, 2026
5f606d1
Remove corba server references and unused files
psardin001 Jan 21, 2026
0188f04
Merge pull request #100 from psardin001/pr/documentation
florent-lamiraux Jan 26, 2026
59c9908
Merge pull request #99 from psardin001/pr/path-serialization
florent-lamiraux Jan 26, 2026
60e1702
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jan 26, 2026
1b6c5c1
Merge pull request #101 from humanoid-path-planner/pre-commit-ci-upda…
mergify[bot] Jan 26, 2026
5dc741a
Add missing visualModel getter to pinocchio device
psardin001 Jan 27, 2026
435ecc2
Deprecate Device::asPinDevice()
psardin001 Jan 28, 2026
af8225a
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Feb 9, 2026
ab1de10
Merge pull request #104 from humanoid-path-planner/pre-commit-ci-upda…
mergify[bot] Feb 9, 2026
4263c31
Add missing graph shared ptr type python exposition
psardin001 Feb 10, 2026
e240229
Fix constraint graph problem getter
psardin001 Feb 11, 2026
0522d9c
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 11, 2026
9117651
flake.lock: Update
github-actions[bot] Feb 13, 2026
8e6438c
Merge pull request #107 from humanoid-path-planner/update_flake_lock_…
mergify[bot] Feb 13, 2026
de55627
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Feb 16, 2026
6fbb18e
Merge pull request #108 from humanoid-path-planner/pre-commit-ci-upda…
mergify[bot] Feb 16, 2026
2477dde
Remove dead PYTHON_UNIT_TESTS code from tests CMakeLists
psardin001 Feb 18, 2026
00cbd3e
Expose contact surfaces from device
psardin001 Feb 23, 2026
545d29e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 23, 2026
12a8d2b
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Feb 23, 2026
dad84cc
Merge pull request #111 from humanoid-path-planner/pre-commit-ci-upda…
mergify[bot] Feb 23, 2026
7947e66
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Mar 2, 2026
c14bfa1
Merge pull request #112 from humanoid-path-planner/pre-commit-ci-upda…
mergify[bot] Mar 2, 2026
2fbe19a
[pyhpp.pinocchio] Bind method Device::removeJoints
florent-lamiraux Mar 4, 2026
7080051
[manipulation.Device] Add methods to add handles and grippers.
florent-lamiraux Mar 4, 2026
81cc7ce
[Gripper, Handle] Add a method to get the parent joint index in pinoc…
florent-lamiraux Mar 6, 2026
8bff633
drop submodule
nim65s Feb 19, 2026
24d1864
update packaging
nim65s Mar 6, 2026
11b101e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 6, 2026
0f3b660
oops
nim65s Mar 6, 2026
59282a3
tooling
nim65s Mar 6, 2026
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
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
interval: "monthly"
3 changes: 2 additions & 1 deletion .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ jobs:
matrix:
os: [ubuntu] # TODO
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: cachix/install-nix-action@v31
- uses: cachix/cachix-action@v16
with:
name: gepetto
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: nix flake check -L
- run: nix build -L
check:
if: always()
name: check-macos-linux-nix
Expand Down
30 changes: 22 additions & 8 deletions .github/workflows/update-flake-lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,28 @@ on:
- cron: '0 16 13 * *'

jobs:
lockfile:
runs-on: ubuntu-latest
update-flake-inputs:
runs-on: ubuntu-slim
permissions:
contents: write
pull-requests: write
steps:
- name: Generate GitHub App Token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.GEPETTO_NIX_APP_ID }}
private-key: ${{ secrets.GEPETTO_NIX_APP_PRIVATE_KEY }}
- name: Checkout repository
uses: actions/checkout@v5
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@main
uses: actions/checkout@v6
with:
token: ${{ steps.app-token.outputs.token }}
- name: Setup Nix
uses: cachix/install-nix-action@v31
- name: Update flake inputs
uses: mic92/update-flake-inputs@v1
with:
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
github-token: ${{ steps.app-token.outputs.token }}
pr-labels: 'no-changelog'
git-author-name: 'hrp2-14'
git-author-email: '40568249+hrp2-14@users.noreply.github.com'
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

1 change: 1 addition & 0 deletions .mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ pull_request_rules:
- check-success = "pre-commit.ci - pr"
- or:
- author = dependabot[bot]
- author = gepetto-flake-updater[bot]
- author = github-actions[bot]
- author = hrp2-14
- author = pre-commit-ci[bot]
Expand Down
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
ci:
autoupdate_branch: devel
autoupdate_schedule: quarterly
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.12
rev: v0.15.5
hooks:
- id: ruff
args:
Expand All @@ -14,11 +14,11 @@ repos:
hooks:
- id: cmake-format
- repo: https://github.com/pappasam/toml-sort
rev: v0.24.2
rev: v0.24.3
hooks:
- id: toml-sort-fix
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v21.1.0
rev: v22.1.0
hooks:
- id: clang-format
args:
Expand Down
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ add_project_dependency(hpp-util REQUIRED)
add_project_dependency(hpp-pinocchio REQUIRED)
add_project_dependency(hpp-constraints REQUIRED)
add_project_dependency(hpp-core REQUIRED)
add_project_dependency(hpp-corbaserver REQUIRED)
add_project_dependency(hpp-manipulation REQUIRED)
add_project_dependency(hpp-manipulation-urdf REQUIRED)

Expand Down
1 change: 0 additions & 1 deletion cmake
Submodule cmake deleted from 8456ad
8 changes: 7 additions & 1 deletion doc/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,13 @@ def _xmlDirFromPkgConfig(pkg):

nsToPackage = {
"hpp::core": _xmlDirFromPkgConfig("hpp-core"),
"hpp::core::path": _xmlDirFromPkgConfig("hpp-core"),
"hpp::constraints": _xmlDirFromPkgConfig("hpp-constraints"),
"hpp::constraints::solver": _xmlDirFromPkgConfig("hpp-constraints"),
"hpp::pinocchio": _xmlDirFromPkgConfig("hpp-pinocchio"),
"hpp::manipulation": _xmlDirFromPkgConfig("hpp-manipulation"),
"hpp::manipulation::graph": _xmlDirFromPkgConfig("hpp-manipulation"),
"hpp::manipulation::pathPlanner": _xmlDirFromPkgConfig("hpp-manipulation"),
}


Expand All @@ -142,7 +148,7 @@ def make_doc_string(brief, detailled):


def make_args_string(args):
return "(" + ",".join(['arg("' + a + '")' for a in args]) + ")"
return "(" + ",".join(['boost::python::arg("' + a + '")' for a in args]) + ")"


def substitute(istr, ostr):
Expand Down
127 changes: 98 additions & 29 deletions doc/doxygen_xml_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,45 +16,112 @@ def _getCompound(self, kind, name):

def classDoc(self, name):
el = self._getCompound("class", name)
return ClassDoc(path.join(self.directory, el.get("refid") + ".xml"))
return ClassDoc(
path.join(self.directory, el.get("refid") + ".xml"), self.directory
)


class ClassDoc:
def __init__(self, filename):
def __init__(self, filename, directory=None):
self.tree = etree.parse(filename)
self.compound = self.tree.find("/compounddef")
self.compound = self.tree.find("./compounddef")
self.classname = self.compound.find("compoundname").text.strip()
self.directory = directory if directory else path.dirname(filename)
self._group_cache = {}

@staticmethod
def _getDoc(el):
b = el.find("briefdescription")
d = el.find("detaileddescription")
return etree.tostring(b, method="text").strip(), d.text.strip()
brief = etree.tostring(b, method="text", encoding="unicode").strip()
detailed = d.text.strip() if d.text else ""
return brief, detailed

def _getMemberFromGroup(self, memberDefKind, name):
"""Look for memberdef in a group file via member refid."""
members = self.compound.xpath(
"sectiondef/member[@kind='" + memberDefKind + "' and name='" + name + "']"
)
if not members:
return None
member = members[0]
refid = member.get("refid")
if not refid:
return None
group_id = refid.rsplit("_1", 1)[0]
if group_id not in self._group_cache:
group_file = path.join(self.directory, group_id + ".xml")
if not path.isfile(group_file):
return None
self._group_cache[group_id] = etree.parse(group_file)
group_tree = self._group_cache[group_id]
memberdefs = group_tree.xpath(
"//memberdef[@id='" + refid + "' and @kind='" + memberDefKind + "']"
)
if memberdefs:
return memberdefs[0]
return None

def _getMemberFromInherited(self, memberDefKind, name):
"""Look for memberdef in base class XML via listofallmembers member refid."""
members = self.compound.xpath("listofallmembers/member[name='" + name + "']")
if not members:
return None
member = members[0]
refid = member.get("refid")
if not refid:
return None
# Extract base class file from refid
# e.g., "classhpp_1_1pinocchio_1_1AbstractDevice_1a312..." -> "classhpp_1_1pinocchio_1_1AbstractDevice"
parts = refid.rsplit("_1", 1)
if len(parts) < 2:
return None
base_class_id = parts[0]
base_class_file = path.join(self.directory, base_class_id + ".xml")
if not path.isfile(base_class_file):
return None
if base_class_id not in self._group_cache:
self._group_cache[base_class_id] = etree.parse(base_class_file)
base_tree = self._group_cache[base_class_id]
memberdefs = base_tree.xpath(
"//memberdef[@id='" + refid + "' and @kind='" + memberDefKind + "']"
)
if memberdefs:
return memberdefs[0]
return None

def _getMember(self, sectionKind, memberDefKind, name):
# return self.compound.xpath ("sectiondef[@kind='" + sectionKind
try:
return self.compound.xpath(
"sectiondef[re:test(@kind,'"
+ sectionKind
+ "')]/memberdef[@kind='"
+ memberDefKind
+ "' and name='"
+ name
+ "']",
namespaces={"re": "http://exslt.org/regular-expressions"},
)[0]
except IndexError as e:
msg = (
"Error: Could not find member ("
+ sectionKind
+ ") "
+ name
+ " of class "
+ self.classname
)
print(msg + "\n" + str(e), file=sys.stderr)
raise IndexError(msg)
# First try to find memberdef directly in class XML
results = self.compound.xpath(
"sectiondef[re:test(@kind,'"
+ sectionKind
+ "')]/memberdef[@kind='"
+ memberDefKind
+ "' and name='"
+ name
+ "']",
namespaces={"re": "http://exslt.org/regular-expressions"},
)
if results:
return results[0]
# Fall back to looking in group files (for @ingroup documented classes)
memberdef = self._getMemberFromGroup(memberDefKind, name)
if memberdef is not None:
return memberdef
# Fall back to looking in base class files (for inherited methods)
memberdef = self._getMemberFromInherited(memberDefKind, name)
if memberdef is not None:
return memberdef
msg = (
"Error: Could not find member ("
+ sectionKind
+ ") "
+ name
+ " of class "
+ self.classname
)
print(msg, file=sys.stderr)
raise IndexError(msg)

def getClassDoc(self):
return self._getDoc(self.compound)
Expand All @@ -76,14 +143,16 @@ def getClassMethodDoc(self, methodname):
]
else:
args = []
args += [el.text.strip() for el in member.xpath("param/declname")]
args += [el.text.strip() for el in member.xpath("param/declname") if el.text]
for parameters in dd.xpath("para/parameterlist/parameteritem"):
pargs = [
el.text.strip()
for el in parameters.find("parameternamelist").findall("parametername")
if el.text
]
pns = " ".join(pargs)
pd = parameters.find("parameterdescription").find("para").text.strip()
para_el = parameters.find("parameterdescription").find("para")
pd = para_el.text.strip() if para_el is not None and para_el.text else ""
d += "\n:param " + pns + ":" + pd
return b, d, args

Expand Down
Loading