Skip to content

Commit

Permalink
[pydrake] Centralize pybind11 includes for ODR safety (RobotLocomotio…
Browse files Browse the repository at this point in the history
…n#19571)

For convenience and easier ODR-safety, consolidate the common pybind11
includes (especially the includes that specialize trait structs) into
our central pydrake_pybind header. This avoids hazards where some
modules forget to include the proper headers and experience compile-
time or runtime failures as a result.
  • Loading branch information
jwnimmer-tri authored and RussTedrake committed Jul 3, 2023
1 parent 2e6c70f commit d3bea00
Show file tree
Hide file tree
Showing 100 changed files with 16 additions and 305 deletions.
3 changes: 0 additions & 3 deletions bindings/pydrake/autodiff_types_pybind.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
#pragma once

#include "pybind11/eigen.h"
#include "pybind11/numpy.h"

#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/autodiff.h"

Expand Down
5 changes: 1 addition & 4 deletions bindings/pydrake/autodiffutils_py.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
#include "pybind11/eigen.h"
#include "pybind11/operators.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"
#include <Eigen/Core>
#include <unsupported/Eigen/AutoDiff>

#include "drake/bindings/pydrake/autodiff_types_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/cpp_param_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
#include <typeinfo>
#include <vector>

#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/type_pack.h"
#include "drake/bindings/pydrake/common/wrap_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
4 changes: 0 additions & 4 deletions bindings/pydrake/common/cpp_template_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
#include <string>
#include <utility>

#include "pybind11/functional.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

// `GetPyTypes` is implemented specifically for `cpp_template`; to simplify
// dependencies, this is included transitively.
#include "drake/bindings/pydrake/common/cpp_param_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/deprecation_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@
#include <string>
#include <utility>

#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/wrap_function.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"

Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/common/eigen_geometry_py.cc
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
#include <cmath>
#include <stdexcept>

#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
#include "drake/bindings/pydrake/common/eigen_geometry_pybind.h"
Expand Down
1 change: 0 additions & 1 deletion bindings/pydrake/common/eigen_geometry_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include <string>
#include <utility>

#include "pybind11/eigen.h"
#include <Eigen/Dense>

#include "drake/bindings/pydrake/common/wrap_pybind.h"
Expand Down
1 change: 0 additions & 1 deletion bindings/pydrake/common/eigen_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

#include <utility>

#include "pybind11/eigen.h"
#include <Eigen/Dense>

#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/identifier_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

#include <string>

#include "pybind11/operators.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/identifier.h"
Expand Down
4 changes: 0 additions & 4 deletions bindings/pydrake/common/module_py.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/autodiff_types_pybind.h"
#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/common/text_logging_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/schema_py.cc
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#include <memory>
#include <vector>

#include "pybind11/eigen.h"
#include "pybind11/eval.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/common/serialize_pybind.h"
Expand Down
7 changes: 2 additions & 5 deletions bindings/pydrake/common/serialize_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,10 @@
#include <variant>
#include <vector>

#include "bindings/pydrake/common/cpp_template_pybind.h"
#include "bindings/pydrake/pydrake_pybind.h"
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"
#include <fmt/format.h>

#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/drake_copyable.h"
#include "drake/common/drake_throw.h"
#include "drake/common/eigen_types.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/common/sorted_pair_pybind.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#pragma once

#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/sorted_pair.h"

Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/test/compatibility_test_util_py.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/functional.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/pydrake_pybind.h"

namespace drake {
Expand Down
1 change: 0 additions & 1 deletion bindings/pydrake/common/test/cpp_param_pybind_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

#include "pybind11/embed.h"
#include "pybind11/eval.h"
#include "pybind11/pybind11.h"
#include <gtest/gtest.h>

#include "drake/bindings/pydrake/test/test_util_pybind.h"
Expand Down
1 change: 0 additions & 1 deletion bindings/pydrake/common/test/cpp_template_pybind_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

#include "pybind11/embed.h"
#include "pybind11/eval.h"
#include "pybind11/pybind11.h"
#include <gtest/gtest.h>

#include "drake/bindings/pydrake/test/test_util_pybind.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ Please review this file and the corresponding test,
`deprecation_utility_test.py`.
*/

#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/deprecation_pybind.h"
#include "drake/bindings/pydrake/common/test/deprecation_example/example_class.h" // NOLINT
#include "drake/bindings/pydrake/common/test/deprecation_example/example_class_documentation.h" // NOLINT
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#include "pybind11/pybind11.h"
#include <Eigen/Dense>

#include "drake/bindings/pydrake/common/eigen_geometry_pybind.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/common/test/serialize_test_bar_py.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/common/test/serialize_test_foo_py.h"
#include "drake/common/name_value.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/common/test/serialize_test_foo_py.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#include "drake/bindings/pydrake/common/test/serialize_test_foo_py.h"

#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/serialize_pybind.h"

namespace drake {
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/test/serialize_test_util_py.cc
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
#include <array>
#include <utility>

#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

#include "pybind11/embed.h"
#include "pybind11/eval.h"
#include "pybind11/pybind11.h"
#include <gtest/gtest.h>

#include "drake/bindings/pydrake/test/test_util_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/test/value_test_util_py.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/operators.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/value_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"

Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/common/test/wrap_test_util_py.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/wrap_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/copyable_unique_ptr.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/common/type_safe_index_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

#include <string>

#include "pybind11/operators.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/value_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
1 change: 0 additions & 1 deletion bindings/pydrake/common/value_py.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#include <string>

#include "pybind11/eval.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/cpp_param_pybind.h"
#include "drake/bindings/pydrake/common/value_pybind.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/common/wrap_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
#include <type_traits>
#include <utility>

#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/wrap_function.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/copyable_unique_ptr.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/examples/examples_py_acrobot.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/examples/examples_py_compass_gait.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
4 changes: 0 additions & 4 deletions bindings/pydrake/examples/examples_py_manipulation_station.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/deprecation_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/examples/examples_py_pendulum.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/examples/examples_py_quadrotor.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/examples/examples_py_rimless_wheel.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/examples/examples_py_van_der_pol.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/examples/examples_py.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/geometry/geometry_py_common.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
represent the input values to all of those computations. They can be found in
the pydrake.geometry module. */

#include "pybind11/operators.h"

#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
#include "drake/bindings/pydrake/common/deprecation_pybind.h"
#include "drake/bindings/pydrake/common/identifier_pybind.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/geometry/geometry_py_optimization.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
drake::geometry::optimization namespace. They can be found in the
pydrake.geometry.optimization module. */

#include "pybind11/stl/filesystem.h"

#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
#include "drake/bindings/pydrake/common/deprecation_pybind.h"
#include "drake/bindings/pydrake/common/identifier_pybind.h"
Expand Down
2 changes: 0 additions & 2 deletions bindings/pydrake/geometry/geometry_py_render.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
and drake/geometry/render* directories. They can be found in the
pydrake.geometry module. */

#include "pybind11/operators.h"

#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/common/value_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/geometry/optimization_pybind.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#pragma once

#include <utility>
#include <vector>

#include "pybind11/stl.h"

#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/geometry/optimization/convex_set.h"

Expand Down
4 changes: 0 additions & 4 deletions bindings/pydrake/lcm_py.cc
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
#include <cstring>

#include "pybind11/functional.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/deprecation_pybind.h"
#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
Expand Down
4 changes: 0 additions & 4 deletions bindings/pydrake/manipulation/manipulation_py_kuka_iiwa.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/operators.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
4 changes: 0 additions & 4 deletions bindings/pydrake/manipulation/manipulation_py_schunk_wsg.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/manipulation/manipulation_py_util.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/serialize_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/math_operators_pybind.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
#include <cmath>
#include <type_traits>

#include "pybind11/eigen.h"
#include "pybind11/numpy.h"

#include "drake/bindings/pydrake/pydrake_pybind.h"
#include "drake/common/drake_bool.h"

Expand Down
5 changes: 0 additions & 5 deletions bindings/pydrake/math_py.cc
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
#include <cmath>

#include "pybind11/eigen.h"
#include "pybind11/functional.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/autodiff_types_pybind.h"
#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
Expand Down
1 change: 0 additions & 1 deletion bindings/pydrake/multibody/benchmarks_py.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include "pybind11/eval.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/documentation_pybind.h"
#include "drake/bindings/pydrake/pydrake_pybind.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/multibody/fem_py.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"

#include "drake/bindings/pydrake/common/cpp_template_pybind.h"
#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
#include "drake/bindings/pydrake/common/type_pack.h"
Expand Down
3 changes: 0 additions & 3 deletions bindings/pydrake/multibody/inverse_kinematics_py.cc
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
#include "drake/bindings/pydrake/multibody/inverse_kinematics_py.h"

#include "pybind11/eigen.h"
#include "pybind11/pybind11.h"

#include "drake/bindings/pydrake/common/default_scalars_pybind.h"
#include "drake/bindings/pydrake/common/sorted_pair_pybind.h"
#include "drake/bindings/pydrake/documentation_pybind.h"
Expand Down
Loading

0 comments on commit d3bea00

Please sign in to comment.