[yt-svn] commit/yt: jzuhone: Merged in MatthewTurk/yt (pull request #1647)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Jul 21 11:30:20 PDT 2015
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/5c0e30b252d4/
Changeset: 5c0e30b252d4
Branch: yt
User: jzuhone
Date: 2015-07-21 18:30:05+00:00
Summary: Merged in MatthewTurk/yt (pull request #1647)
Attempt to make hashing more robust and to work in 2 and 3.
Affected #: 1 file
diff -r 2fee18b574b436c4f19922aea6cd3f4e26eac221 -r 5c0e30b252d4e7062dea066945419186eca9939e yt/geometry/selection_routines.pyx
--- a/yt/geometry/selection_routines.pyx
+++ b/yt/geometry/selection_routines.pyx
@@ -603,20 +603,24 @@
return mask.view("bool")
def __hash__(self):
- return hash(("mine", self._hash_vals()) +
- ("base", self._base_hash()))
+ cdef np.int64_t hash_val = 0
+ for v in self._hash_vals() + self._base_hash():
+ hash_val ^= hash(v)
+ return hash_val
def _hash_vals(self):
raise NotImplementedError
def _base_hash(self):
- return (self.min_level, self.max_level, self.overlap_cells,
- self.periodicity[0],
- self.periodicity[1],
- self.periodicity[2],
- self.domain_width[0],
- self.domain_width[1],
- self.domain_width[2])
+ return (("min_level", self.min_level),
+ ("max_level", self.max_level),
+ ("overlap_cells", self.overlap_cells),
+ ("periodicity[0]", self.periodicity[0]),
+ ("periodicity[1]", self.periodicity[1]),
+ ("periodicity[2]", self.periodicity[2]),
+ ("domain_width[0]", self.domain_width[0]),
+ ("domain_width[1]", self.domain_width[1]),
+ ("domain_width[2]", self.domain_width[2]))
cdef class PointSelector(SelectorObject):
@@ -670,7 +674,9 @@
return 0
def _hash_vals(self):
- return (self.p[0], self.p[1], self.p[2])
+ return (("p[0]", self.p[0]),
+ ("p[1]", self.p[1]),
+ ("p[2]", self.p[2]))
point_selector = PointSelector
@@ -771,8 +777,11 @@
return 1
def _hash_vals(self):
- return (self.radius, self.radius2,
- self.center[0], self.center[1], self.center[2])
+ return (("radius", self.radius),
+ ("radius2", self.radius2),
+ ("center[0]", self.center[0]),
+ ("center[1]", self.center[1]),
+ ("center[2]", self.center[2]))
sphere_selector = SphereSelector
@@ -867,8 +876,12 @@
return 1
def _hash_vals(self):
- return (self.left_edge[0], self.left_edge[1], self.left_edge[2],
- self.right_edge[0], self.right_edge[1], self.right_edge[2])
+ return (("left_edge[0]", self.left_edge[0]),
+ ("left_edge[1]", self.left_edge[1]),
+ ("left_edge[2]", self.left_edge[2]),
+ ("right_edge[0]", self.right_edge[0]),
+ ("right_edge[1]", self.right_edge[1]),
+ ("right_edge[2]", self.right_edge[2]))
region_selector = RegionSelector
@@ -899,7 +912,10 @@
return 1
def _hash_vals(self):
- return self._conditionals
+ t = ()
+ for i, c in enumerate(self._conditionals):
+ t += ("conditional[%s]" % i, c)
+ return ("conditionals", t)
cut_region_selector = CutRegionSelector
@@ -1005,9 +1021,15 @@
return 0
def _hash_vals(self):
- return (self.norm_vec[0], self.norm_vec[1], self.norm_vec[2],
- self.center[0], self.center[1], self.center[2],
- self.radius, self.radius2, self.height)
+ return (("norm_vec[0]", self.norm_vec[0]),
+ ("norm_vec[1]", self.norm_vec[1]),
+ ("norm_vec[2]", self.norm_vec[2]),
+ ("center[0]", self.center[0]),
+ ("center[1]", self.center[1]),
+ ("center[2]", self.center[2]),
+ ("radius", self.radius),
+ ("radius2", self.radius2),
+ ("height", self.height))
disk_selector = DiskSelector
@@ -1084,8 +1106,10 @@
return 1
def _hash_vals(self):
- return (self.norm_vec[0], self.norm_vec[1], self.norm_vec[2],
- self.d)
+ return (("norm_vec[0]", self.norm_vec[0]),
+ ("norm_vec[1]", self.norm_vec[1]),
+ ("norm_vec[2]", self.norm_vec[2]),
+ ("d", self.d))
cutting_selector = CuttingPlaneSelector
@@ -1173,7 +1197,8 @@
return 0
def _hash_vals(self):
- return (self.axis, self.coord)
+ return (("axis", self.axis),
+ ("coord", self.coord))
slice_selector = SliceSelector
@@ -1271,7 +1296,11 @@
return 0
def _hash_vals(self):
- return (self.px_ax, self.py_ax, self.px, self.py, self.axis)
+ return (("px_ax", self.px_ax),
+ ("py_ax", self.py_ax),
+ ("px", self.px),
+ ("py", self.py),
+ ("axis", self.axis))
ortho_ray_selector = OrthoRaySelector
@@ -1495,9 +1524,15 @@
return self.select_bbox(left_edge, right_edge)
def _hash_vals(self):
- return (self.p1[0], self.p1[1], self.p1[2],
- self.p2[0], self.p2[1], self.p2[2],
- self.vec[0], self.vec[1], self.vec[2])
+ return (("p1[0]", self.p1[0]),
+ ("p1[1]", self.p1[1]),
+ ("p1[2]", self.p1[2]),
+ ("p2[0]", self.p2[0]),
+ ("p2[1]", self.p2[1]),
+ ("p2[2]", self.p2[2]),
+ ("vec[0]", self.vec[0]),
+ ("vec[1]", self.vec[1]),
+ ("vec[2]", self.vec[2]))
ray_selector = RaySelector
@@ -1622,11 +1657,21 @@
return 0
def _hash_vals(self):
- return (self.vec[0][0], self.vec[0][1], self.vec[0][2],
- self.vec[1][0], self.vec[1][1], self.vec[1][2],
- self.vec[2][0], self.vec[2][1], self.vec[2][2],
- self.mag[0], self.mag[1], self.mag[2],
- self.center[0], self.center[1], self.center[2])
+ return (("vec[0][0]", self.vec[0][0]),
+ ("vec[0][1]", self.vec[0][1]),
+ ("vec[0][2]", self.vec[0][2]),
+ ("vec[1][0]", self.vec[1][0]),
+ ("vec[1][1]", self.vec[1][1]),
+ ("vec[1][2]", self.vec[1][2]),
+ ("vec[2][0]", self.vec[2][0]),
+ ("vec[2][1]", self.vec[2][1]),
+ ("vec[2][2]", self.vec[2][2]),
+ ("mag[0]", self.mag[0]),
+ ("mag[1]", self.mag[1]),
+ ("mag[2]", self.mag[2]),
+ ("center[0]", self.center[0]),
+ ("center[1]", self.center[1]),
+ ("center[2]", self.center[2]))
ellipsoid_selector = EllipsoidSelector
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list