From 30e4e891dbbccb6b9ca416182e70187eaced71a0 Mon Sep 17 00:00:00 2001 From: Jeremy Reizenstein Date: Sun, 18 Oct 2020 02:37:41 -0700 Subject: [PATCH] linter comment strictnesss Summary: The linter has become stricter about the indenting of comments and docstrings. This was accompanied by a codemod. In a few places we can fix the problem nicer than the codemod has. Reviewed By: gkioxari Differential Revision: D24363880 fbshipit-source-id: 4cff3bbe3d2a834bc92a490469a2b24fa376e6ab --- pytorch3d/renderer/mesh/shader.py | 2 +- pytorch3d/renderer/mesh/utils.py | 100 ++++----- pytorch3d/structures/meshes.py | 320 ++++++++++++++-------------- pytorch3d/structures/pointclouds.py | 144 ++++++------- 4 files changed, 283 insertions(+), 283 deletions(-) diff --git a/pytorch3d/renderer/mesh/shader.py b/pytorch3d/renderer/mesh/shader.py index c6ad5301..11b98409 100644 --- a/pytorch3d/renderer/mesh/shader.py +++ b/pytorch3d/renderer/mesh/shader.py @@ -346,7 +346,7 @@ class SoftSilhouetteShader(nn.Module): self.blend_params = blend_params if blend_params is not None else BlendParams() def forward(self, fragments, meshes, **kwargs) -> torch.Tensor: - """ " + """ Only want to render the silhouette so RGB values can be ones. There is no need for lighting or texturing """ diff --git a/pytorch3d/renderer/mesh/utils.py b/pytorch3d/renderer/mesh/utils.py index 90cb63b3..3faf8f7a 100644 --- a/pytorch3d/renderer/mesh/utils.py +++ b/pytorch3d/renderer/mesh/utils.py @@ -78,68 +78,68 @@ def _try_place_rectangle( occupied: List[Tuple[int, int]], ) -> bool: """ - Try to place rect within the current bounding box. - Part of the implementation of pack_rectangles. + Try to place rect within the current bounding box. + Part of the implementation of pack_rectangles. - Note that the arguments `placed_so_far` and `occupied` are modified. + Note that the arguments `placed_so_far` and `occupied` are modified. - Args: - rect: rectangle to place - placed_so_far: the locations decided upon so far - a list of - (x, y, whether flipped). The nth element is the - location of the nth rectangle if it has been decided. - (modified in place) - occupied: the nodes of the graph of extents of rightmost placed - rectangles - (modified in place) + Args: + rect: rectangle to place + placed_so_far: the locations decided upon so far - a list of + (x, y, whether flipped). The nth element is the + location of the nth rectangle if it has been decided. + (modified in place) + occupied: the nodes of the graph of extents of rightmost placed + rectangles - (modified in place) - Returns: - True on success. + Returns: + True on success. - Example: - (We always have placed the first rectangle horizontally and other - rectangles above it.) - Let's say the placed boxes 1-4 are layed out like this. - The coordinates of the points marked X are stored in occupied. - It is to the right of the X's that we seek to place rect. + Example: + (We always have placed the first rectangle horizontally and other + rectangles above it.) + Let's say the placed boxes 1-4 are layed out like this. + The coordinates of the points marked X are stored in occupied. + It is to the right of the X's that we seek to place rect. - +-----------------------X - |2 | - | +---X - | |4 | - | | | - | +---+X - | |3 | - | | | - +-----------------------+----+------X + +-----------------------X + |2 | + | +---X + | |4 | + | | | + | +---+X + | |3 | + | | | + +-----------------------+----+------X y |1 | ^ | --->x | | +-----------------------------------+ - We want to place this rectangle. + We want to place this rectangle. - +-+ - |5| - | | - | | = rect - | | - | | - | | - +-+ + +-+ + |5| + | | + | | = rect + | | + | | + | | + +-+ - The call will succeed, returning True, leaving us with + The call will succeed, returning True, leaving us with - +-----------------------X - |2 | +-X - | +---+|5| - | |4 || | - | | || | - | +---++ | - | |3 | | - | | | | - +-----------------------+----+-+----X - |1 | - | | - +-----------------------------------+ . + +-----------------------X + |2 | +-X + | +---+|5| + | |4 || | + | | || | + | +---++ | + | |3 | | + | | | | + +-----------------------+----+-+----X + |1 | + | | + +-----------------------------------+ . """ total_width = occupied[0][0] diff --git a/pytorch3d/structures/meshes.py b/pytorch3d/structures/meshes.py index 06feec5f..a911223c 100644 --- a/pytorch3d/structures/meshes.py +++ b/pytorch3d/structures/meshes.py @@ -9,177 +9,177 @@ from . import utils as struct_utils class Meshes(object): """ - This class provides functions for working with batches of triangulated - meshes with varying numbers of faces and vertices, and converting between - representations. + This class provides functions for working with batches of triangulated + meshes with varying numbers of faces and vertices, and converting between + representations. - Within Meshes, there are three different representations of the faces and - verts data: + Within Meshes, there are three different representations of the faces and + verts data: - List - - only used for input as a starting point to convert to other representations. - Padded - - has specific batch dimension. - Packed - - no batch dimension. - - has auxillary variables used to index into the padded representation. + List + - only used for input as a starting point to convert to other representations. + Padded + - has specific batch dimension. + Packed + - no batch dimension. + - has auxillary variables used to index into the padded representation. - Example: + Example: - Input list of verts V_n = [[V_1], [V_2], ... , [V_N]] - where V_1, ... , V_N are the number of verts in each mesh and N is the - numer of meshes. + Input list of verts V_n = [[V_1], [V_2], ... , [V_N]] + where V_1, ... , V_N are the number of verts in each mesh and N is the + numer of meshes. - Input list of faces F_n = [[F_1], [F_2], ... , [F_N]] - where F_1, ... , F_N are the number of faces in each mesh. + Input list of faces F_n = [[F_1], [F_2], ... , [F_N]] + where F_1, ... , F_N are the number of faces in each mesh. - # SPHINX IGNORE - List | Padded | Packed - ---------------------------|-------------------------|------------------------ - [[V_1], ... , [V_N]] | size = (N, max(V_n), 3) | size = (sum(V_n), 3) - | | - Example for verts: | | - | | - V_1 = 3, V_2 = 4, V_3 = 5 | size = (3, 5, 3) | size = (12, 3) - | | - List([ | tensor([ | tensor([ - [ | [ | [0.1, 0.3, 0.5], - [0.1, 0.3, 0.5], | [0.1, 0.3, 0.5], | [0.5, 0.2, 0.1], - [0.5, 0.2, 0.1], | [0.5, 0.2, 0.1], | [0.6, 0.8, 0.7], - [0.6, 0.8, 0.7], | [0.6, 0.8, 0.7], | [0.1, 0.3, 0.3], - ], | [0, 0, 0], | [0.6, 0.7, 0.8], - [ | [0, 0, 0], | [0.2, 0.3, 0.4], - [0.1, 0.3, 0.3], | ], | [0.1, 0.5, 0.3], - [0.6, 0.7, 0.8], | [ | [0.7, 0.3, 0.6], - [0.2, 0.3, 0.4], | [0.1, 0.3, 0.3], | [0.2, 0.4, 0.8], - [0.1, 0.5, 0.3], | [0.6, 0.7, 0.8], | [0.9, 0.5, 0.2], - ], | [0.2, 0.3, 0.4], | [0.2, 0.3, 0.4], - [ | [0.1, 0.5, 0.3], | [0.9, 0.3, 0.8], - [0.7, 0.3, 0.6], | [0, 0, 0], | ]) - [0.2, 0.4, 0.8], | ], | - [0.9, 0.5, 0.2], | [ | - [0.2, 0.3, 0.4], | [0.7, 0.3, 0.6], | - [0.9, 0.3, 0.8], | [0.2, 0.4, 0.8], | - ] | [0.9, 0.5, 0.2], | - ]) | [0.2, 0.3, 0.4], | - | [0.9, 0.3, 0.8], | - | ] | - | ]) | - Example for faces: | | - | | - F_1 = 1, F_2 = 2, F_3 = 7 | size = (3, 7, 3) | size = (10, 3) - | | - List([ | tensor([ | tensor([ - [ | [ | [ 0, 1, 2], - [0, 1, 2], | [0, 1, 2], | [ 3, 4, 5], - ], | [-1, -1, -1], | [ 4, 5, 6], - [ | [-1, -1, -1] | [ 8, 9, 7], - [0, 1, 2], | [-1, -1, -1] | [ 7, 8, 10], - [1, 2, 3], | [-1, -1, -1] | [ 9, 10, 8], - ], | [-1, -1, -1], | [11, 10, 9], - [ | [-1, -1, -1], | [11, 7, 8], - [1, 2, 0], | ], | [11, 10, 8], - [0, 1, 3], | [ | [11, 9, 8], - [2, 3, 1], | [0, 1, 2], | ]) - [4, 3, 2], | [1, 2, 3], | - [4, 0, 1], | [-1, -1, -1], | - [4, 3, 1], | [-1, -1, -1], | - [4, 2, 1], | [-1, -1, -1], | - ], | [-1, -1, -1], | - ]) | [-1, -1, -1], | - | ], | - | [ | - | [1, 2, 0], | - | [0, 1, 3], | - | [2, 3, 1], | - | [4, 3, 2], | - | [4, 0, 1], | - | [4, 3, 1], | - | [4, 2, 1], | - | ] | - | ]) | - ----------------------------------------------------------------------------- + # SPHINX IGNORE + List | Padded | Packed + ---------------------------|-------------------------|------------------------ + [[V_1], ... , [V_N]] | size = (N, max(V_n), 3) | size = (sum(V_n), 3) + | | + Example for verts: | | + | | + V_1 = 3, V_2 = 4, V_3 = 5 | size = (3, 5, 3) | size = (12, 3) + | | + List([ | tensor([ | tensor([ + [ | [ | [0.1, 0.3, 0.5], + [0.1, 0.3, 0.5], | [0.1, 0.3, 0.5], | [0.5, 0.2, 0.1], + [0.5, 0.2, 0.1], | [0.5, 0.2, 0.1], | [0.6, 0.8, 0.7], + [0.6, 0.8, 0.7], | [0.6, 0.8, 0.7], | [0.1, 0.3, 0.3], + ], | [0, 0, 0], | [0.6, 0.7, 0.8], + [ | [0, 0, 0], | [0.2, 0.3, 0.4], + [0.1, 0.3, 0.3], | ], | [0.1, 0.5, 0.3], + [0.6, 0.7, 0.8], | [ | [0.7, 0.3, 0.6], + [0.2, 0.3, 0.4], | [0.1, 0.3, 0.3], | [0.2, 0.4, 0.8], + [0.1, 0.5, 0.3], | [0.6, 0.7, 0.8], | [0.9, 0.5, 0.2], + ], | [0.2, 0.3, 0.4], | [0.2, 0.3, 0.4], + [ | [0.1, 0.5, 0.3], | [0.9, 0.3, 0.8], + [0.7, 0.3, 0.6], | [0, 0, 0], | ]) + [0.2, 0.4, 0.8], | ], | + [0.9, 0.5, 0.2], | [ | + [0.2, 0.3, 0.4], | [0.7, 0.3, 0.6], | + [0.9, 0.3, 0.8], | [0.2, 0.4, 0.8], | + ] | [0.9, 0.5, 0.2], | + ]) | [0.2, 0.3, 0.4], | + | [0.9, 0.3, 0.8], | + | ] | + | ]) | + Example for faces: | | + | | + F_1 = 1, F_2 = 2, F_3 = 7 | size = (3, 7, 3) | size = (10, 3) + | | + List([ | tensor([ | tensor([ + [ | [ | [ 0, 1, 2], + [0, 1, 2], | [0, 1, 2], | [ 3, 4, 5], + ], | [-1, -1, -1], | [ 4, 5, 6], + [ | [-1, -1, -1] | [ 8, 9, 7], + [0, 1, 2], | [-1, -1, -1] | [ 7, 8, 10], + [1, 2, 3], | [-1, -1, -1] | [ 9, 10, 8], + ], | [-1, -1, -1], | [11, 10, 9], + [ | [-1, -1, -1], | [11, 7, 8], + [1, 2, 0], | ], | [11, 10, 8], + [0, 1, 3], | [ | [11, 9, 8], + [2, 3, 1], | [0, 1, 2], | ]) + [4, 3, 2], | [1, 2, 3], | + [4, 0, 1], | [-1, -1, -1], | + [4, 3, 1], | [-1, -1, -1], | + [4, 2, 1], | [-1, -1, -1], | + ], | [-1, -1, -1], | + ]) | [-1, -1, -1], | + | ], | + | [ | + | [1, 2, 0], | + | [0, 1, 3], | + | [2, 3, 1], | + | [4, 3, 2], | + | [4, 0, 1], | + | [4, 3, 1], | + | [4, 2, 1], | + | ] | + | ]) | + ----------------------------------------------------------------------------- - Auxillary variables for packed representation + Auxillary variables for packed representation - Name | Size | Example from above - -------------------------------|---------------------|----------------------- - | | - verts_packed_to_mesh_idx | size = (sum(V_n)) | tensor([ - | | 0, 0, 0, 1, 1, 1, - | | 1, 2, 2, 2, 2, 2 - | | )] - | | size = (12) - | | - mesh_to_verts_packed_first_idx | size = (N) | tensor([0, 3, 7]) - | | size = (3) - | | - num_verts_per_mesh | size = (N) | tensor([3, 4, 5]) - | | size = (3) - | | - faces_packed_to_mesh_idx | size = (sum(F_n)) | tensor([ - | | 0, 1, 1, 2, 2, 2, - | | 2, 2, 2, 2 - | | )] - | | size = (10) - | | - mesh_to_faces_packed_first_idx | size = (N) | tensor([0, 1, 3]) - | | size = (3) - | | - num_faces_per_mesh | size = (N) | tensor([1, 2, 7]) - | | size = (3) - | | - verts_padded_to_packed_idx | size = (sum(V_n)) | tensor([ - | | 0, 1, 2, 5, 6, 7, - | | 8, 10, 11, 12, 13, - | | 14 - | | )] - | | size = (12) - ----------------------------------------------------------------------------- - # SPHINX IGNORE + Name | Size | Example from above + -------------------------------|---------------------|----------------------- + | | + verts_packed_to_mesh_idx | size = (sum(V_n)) | tensor([ + | | 0, 0, 0, 1, 1, 1, + | | 1, 2, 2, 2, 2, 2 + | | )] + | | size = (12) + | | + mesh_to_verts_packed_first_idx | size = (N) | tensor([0, 3, 7]) + | | size = (3) + | | + num_verts_per_mesh | size = (N) | tensor([3, 4, 5]) + | | size = (3) + | | + faces_packed_to_mesh_idx | size = (sum(F_n)) | tensor([ + | | 0, 1, 1, 2, 2, 2, + | | 2, 2, 2, 2 + | | )] + | | size = (10) + | | + mesh_to_faces_packed_first_idx | size = (N) | tensor([0, 1, 3]) + | | size = (3) + | | + num_faces_per_mesh | size = (N) | tensor([1, 2, 7]) + | | size = (3) + | | + verts_padded_to_packed_idx | size = (sum(V_n)) | tensor([ + | | 0, 1, 2, 5, 6, 7, + | | 8, 10, 11, 12, 13, + | | 14 + | | )] + | | size = (12) + ----------------------------------------------------------------------------- + # SPHINX IGNORE - From the faces, edges are computed and have packed and padded - representations with auxillary variables. + From the faces, edges are computed and have packed and padded + representations with auxillary variables. - E_n = [[E_1], ... , [E_N]] - where E_1, ... , E_N are the number of unique edges in each mesh. - Total number of unique edges = sum(E_n) + E_n = [[E_1], ... , [E_N]] + where E_1, ... , E_N are the number of unique edges in each mesh. + Total number of unique edges = sum(E_n) - # SPHINX IGNORE - Name | Size | Example from above - -------------------------------|-------------------------|---------------------- - | | - edges_packed | size = (sum(E_n), 2) | tensor([ - | | [0, 1], - | | [0, 2], - | | [1, 2], - | | ... - | | [10, 11], - | | )] - | | size = (18, 2) - | | - num_edges_per_mesh | size = (N) | tensor([3, 5, 10]) - | | size = (3) - | | - edges_packed_to_mesh_idx | size = (sum(E_n)) | tensor([ - | | 0, 0, 0, - | | . . . - | | 2, 2, 2 - | | ]) - | | size = (18) - | | - faces_packed_to_edges_packed | size = (sum(F_n), 3) | tensor([ - | | [2, 1, 0], - | | [5, 4, 3], - | | . . . - | | [12, 14, 16], - | | ]) - | | size = (10, 3) - | | - mesh_to_edges_packed_first_idx | size = (N) | tensor([0, 3, 8]) - | | size = (3) - ---------------------------------------------------------------------------- - # SPHINX IGNORE + # SPHINX IGNORE + Name | Size | Example from above + -------------------------------|-------------------------|---------------------- + | | + edges_packed | size = (sum(E_n), 2) | tensor([ + | | [0, 1], + | | [0, 2], + | | [1, 2], + | | ... + | | [10, 11], + | | )] + | | size = (18, 2) + | | + num_edges_per_mesh | size = (N) | tensor([3, 5, 10]) + | | size = (3) + | | + edges_packed_to_mesh_idx | size = (sum(E_n)) | tensor([ + | | 0, 0, 0, + | | . . . + | | 2, 2, 2 + | | ]) + | | size = (18) + | | + faces_packed_to_edges_packed | size = (sum(F_n), 3) | tensor([ + | | [2, 1, 0], + | | [5, 4, 3], + | | . . . + | | [12, 14, 16], + | | ]) + | | size = (10, 3) + | | + mesh_to_edges_packed_first_idx | size = (N) | tensor([0, 3, 8]) + | | size = (3) + ---------------------------------------------------------------------------- + # SPHINX IGNORE """ _INTERNAL_TENSORS = [ diff --git a/pytorch3d/structures/pointclouds.py b/pytorch3d/structures/pointclouds.py index a61beaa0..4b302b5e 100644 --- a/pytorch3d/structures/pointclouds.py +++ b/pytorch3d/structures/pointclouds.py @@ -8,85 +8,85 @@ from . import utils as struct_utils class Pointclouds(object): """ - This class provides functions for working with batches of 3d point clouds, - and converting between representations. + This class provides functions for working with batches of 3d point clouds, + and converting between representations. - Within Pointclouds, there are three different representations of the data. + Within Pointclouds, there are three different representations of the data. - List - - only used for input as a starting point to convert to other representations. - Padded - - has specific batch dimension. - Packed - - no batch dimension. - - has auxillary variables used to index into the padded representation. + List + - only used for input as a starting point to convert to other representations. + Padded + - has specific batch dimension. + Packed + - no batch dimension. + - has auxillary variables used to index into the padded representation. - Example + Example - Input list of points = [[P_1], [P_2], ... , [P_N]] - where P_1, ... , P_N are the number of points in each cloud and N is the - number of clouds. + Input list of points = [[P_1], [P_2], ... , [P_N]] + where P_1, ... , P_N are the number of points in each cloud and N is the + number of clouds. - # SPHINX IGNORE - List | Padded | Packed - ---------------------------|-------------------------|------------------------ - [[P_1], ... , [P_N]] | size = (N, max(P_n), 3) | size = (sum(P_n), 3) - | | - Example for locations | | - or colors: | | - | | - P_1 = 3, P_2 = 4, P_3 = 5 | size = (3, 5, 3) | size = (12, 3) - | | - List([ | tensor([ | tensor([ - [ | [ | [0.1, 0.3, 0.5], - [0.1, 0.3, 0.5], | [0.1, 0.3, 0.5], | [0.5, 0.2, 0.1], - [0.5, 0.2, 0.1], | [0.5, 0.2, 0.1], | [0.6, 0.8, 0.7], - [0.6, 0.8, 0.7] | [0.6, 0.8, 0.7], | [0.1, 0.3, 0.3], - ], | [0, 0, 0], | [0.6, 0.7, 0.8], - [ | [0, 0, 0] | [0.2, 0.3, 0.4], - [0.1, 0.3, 0.3], | ], | [0.1, 0.5, 0.3], - [0.6, 0.7, 0.8], | [ | [0.7, 0.3, 0.6], - [0.2, 0.3, 0.4], | [0.1, 0.3, 0.3], | [0.2, 0.4, 0.8], - [0.1, 0.5, 0.3] | [0.6, 0.7, 0.8], | [0.9, 0.5, 0.2], - ], | [0.2, 0.3, 0.4], | [0.2, 0.3, 0.4], - [ | [0.1, 0.5, 0.3], | [0.9, 0.3, 0.8], - [0.7, 0.3, 0.6], | [0, 0, 0] | ]) - [0.2, 0.4, 0.8], | ], | - [0.9, 0.5, 0.2], | [ | - [0.2, 0.3, 0.4], | [0.7, 0.3, 0.6], | - [0.9, 0.3, 0.8], | [0.2, 0.4, 0.8], | - ] | [0.9, 0.5, 0.2], | - ]) | [0.2, 0.3, 0.4], | - | [0.9, 0.3, 0.8] | - | ] | - | ]) | - ----------------------------------------------------------------------------- + # SPHINX IGNORE + List | Padded | Packed + ---------------------------|-------------------------|------------------------ + [[P_1], ... , [P_N]] | size = (N, max(P_n), 3) | size = (sum(P_n), 3) + | | + Example for locations | | + or colors: | | + | | + P_1 = 3, P_2 = 4, P_3 = 5 | size = (3, 5, 3) | size = (12, 3) + | | + List([ | tensor([ | tensor([ + [ | [ | [0.1, 0.3, 0.5], + [0.1, 0.3, 0.5], | [0.1, 0.3, 0.5], | [0.5, 0.2, 0.1], + [0.5, 0.2, 0.1], | [0.5, 0.2, 0.1], | [0.6, 0.8, 0.7], + [0.6, 0.8, 0.7] | [0.6, 0.8, 0.7], | [0.1, 0.3, 0.3], + ], | [0, 0, 0], | [0.6, 0.7, 0.8], + [ | [0, 0, 0] | [0.2, 0.3, 0.4], + [0.1, 0.3, 0.3], | ], | [0.1, 0.5, 0.3], + [0.6, 0.7, 0.8], | [ | [0.7, 0.3, 0.6], + [0.2, 0.3, 0.4], | [0.1, 0.3, 0.3], | [0.2, 0.4, 0.8], + [0.1, 0.5, 0.3] | [0.6, 0.7, 0.8], | [0.9, 0.5, 0.2], + ], | [0.2, 0.3, 0.4], | [0.2, 0.3, 0.4], + [ | [0.1, 0.5, 0.3], | [0.9, 0.3, 0.8], + [0.7, 0.3, 0.6], | [0, 0, 0] | ]) + [0.2, 0.4, 0.8], | ], | + [0.9, 0.5, 0.2], | [ | + [0.2, 0.3, 0.4], | [0.7, 0.3, 0.6], | + [0.9, 0.3, 0.8], | [0.2, 0.4, 0.8], | + ] | [0.9, 0.5, 0.2], | + ]) | [0.2, 0.3, 0.4], | + | [0.9, 0.3, 0.8] | + | ] | + | ]) | + ----------------------------------------------------------------------------- - Auxillary variables for packed representation + Auxillary variables for packed representation - Name | Size | Example from above - -------------------------------|---------------------|----------------------- - | | - packed_to_cloud_idx | size = (sum(P_n)) | tensor([ - | | 0, 0, 0, 1, 1, 1, - | | 1, 2, 2, 2, 2, 2 - | | )] - | | size = (12) - | | - cloud_to_packed_first_idx | size = (N) | tensor([0, 3, 7]) - | | size = (3) - | | - num_points_per_cloud | size = (N) | tensor([3, 4, 5]) - | | size = (3) - | | - padded_to_packed_idx | size = (sum(P_n)) | tensor([ - | | 0, 1, 2, 5, 6, 7, - | | 8, 10, 11, 12, 13, - | | 14 - | | )] - | | size = (12) - ----------------------------------------------------------------------------- - # SPHINX IGNORE + Name | Size | Example from above + -------------------------------|---------------------|----------------------- + | | + packed_to_cloud_idx | size = (sum(P_n)) | tensor([ + | | 0, 0, 0, 1, 1, 1, + | | 1, 2, 2, 2, 2, 2 + | | )] + | | size = (12) + | | + cloud_to_packed_first_idx | size = (N) | tensor([0, 3, 7]) + | | size = (3) + | | + num_points_per_cloud | size = (N) | tensor([3, 4, 5]) + | | size = (3) + | | + padded_to_packed_idx | size = (sum(P_n)) | tensor([ + | | 0, 1, 2, 5, 6, 7, + | | 8, 10, 11, 12, 13, + | | 14 + | | )] + | | size = (12) + ----------------------------------------------------------------------------- + # SPHINX IGNORE """ _INTERNAL_TENSORS = [