http://pypi.python.org/pypi/planar/0.2
The big features are:
- Affine transforms
- Vector arrays
If anyone feels like testing it on their platform of choice, that'd be awesome.
-Casey
Thanks for trying it, I'm happy to hear that it builds successfully,
That failure is interesting. The assertion is intended to crash the
process if it fails, because it basically means that something screwy
is going on and all bets are off. In this case, it means that the
"self" argument to the C method function is not the type of object it
expects. It's one of those things that "shouldn't happen" but
obviously is for some reason.
To help debug, can you add this line before line 1915 in cvector.c and
rebuild and run the tests?
printf("%s\n", Py_TYPE(self)->tp_name);
That will tell us what the thing is, assuming it's a valid python
object, but even if it isn't that tells us something.
Also running the tests with the "-v" option will help show all the
tests that have run, and in what order.
Thanks much!
-Casey
I'm on a different WinXP machine today (at work), again with Python2.7,
mingw gcc. Same behaviour.
I added the printf to cvector.c and it prints 'planar.Vec2Array'. Full
output below.
> python setup.py build
lib/planar/planar.h:55: warning: 'cos_sin_deg' defined but not used
lib/planar/planar.h:163: warning: 'hash_double' defined but not used
lib/planar/planar.h:194: warning: 'PlanarVec2_FromDoubles' defined but
not used
lib/planar/planar.h:208: warning: 'PlanarVec2_FromStruct' defined but
not used
lib/planar/planar.h:222: warning: 'PlanarVec2_Parse' defined but not used
lib/planar/ctransform.c: In function `Affine_itransform':
lib/planar/ctransform.c:492: warning: long unsigned int format,
Py_ssize_t arg (arg 3)
lib/planar/ctransform.c: At top level:
lib/planar/planar.h:208: warning: 'PlanarVec2_FromStruct' defined but
not used
> nosetests -v -d -w build\lib.win32-2.7\planar
planar.test.test_planar.test_version_info ... ok
planar.test.test_planar.test_default_implementation ... ok
planar.test.test_planar.test_default_epsilon ... ok
planar.test.test_planar.test_set_epsilon ... ok
test_add (planar.test.test_transform.CAffineTestCase) ... ok
test_almost_equals (planar.test.test_transform.CAffineTestCase) ... ok
test_args_members_wrong_type
(planar.test.test_transform.CAffineTestCase) ... ok
test_args_too_few (planar.test.test_transform.CAffineTestCase) ... ok
test_args_too_many (planar.test.test_transform.CAffineTestCase) ... ok
test_cant_invert_degenerate (planar.test.test_transform.CAffineTestCase)
... ok
test_column_vectors (planar.test.test_transform.CAffineTestCase) ... ok
test_determinant (planar.test.test_transform.CAffineTestCase) ... ok
test_equality (planar.test.test_transform.CAffineTestCase) ... ok
test_getitem (planar.test.test_transform.CAffineTestCase) ... ok
test_getitem_wrong_type (planar.test.test_transform.CAffineTestCase) ... ok
test_gt (planar.test.test_transform.CAffineTestCase) ... ok
test_identity_constructor (planar.test.test_transform.CAffineTestCase)
... ok
test_imul_transform (planar.test.test_transform.CAffineTestCase) ... ok
test_imul_vector (planar.test.test_transform.CAffineTestCase) ... ok
test_inverse (planar.test.test_transform.CAffineTestCase) ... ok
test_is_conformal (planar.test.test_transform.CAffineTestCase) ... ok
test_is_degenerate (planar.test.test_transform.CAffineTestCase) ... ok
test_is_orthonormal (planar.test.test_transform.CAffineTestCase) ... ok
test_is_rectilinear (planar.test.test_transform.CAffineTestCase) ... ok
test_itransform (planar.test.test_transform.CAffineTestCase) ... ok
test_len (planar.test.test_transform.CAffineTestCase) ... ok
test_lt (planar.test.test_transform.CAffineTestCase) ... ok
test_members_are_floats (planar.test.test_transform.CAffineTestCase) ... ok
test_mul_by_identity (planar.test.test_transform.CAffineTestCase) ... ok
test_mul_transform (planar.test.test_transform.CAffineTestCase) ... ok
test_mul_vector (planar.test.test_transform.CAffineTestCase) ... ok
test_mul_wrong_type (planar.test.test_transform.CAffineTestCase) ... ok
test_repr (planar.test.test_transform.CAffineTestCase) ... ok
test_rmul_vector (planar.test.test_transform.CAffineTestCase) ... ok
test_rotation_constructor (planar.test.test_transform.CAffineTestCase)
... ok
test_rotation_constructor_quadrants
(planar.test.test_transform.CAffineTestCase) ... ok
test_rotation_constructor_with_pivot
(planar.test.test_transform.CAffineTestCase) ... ok
test_rotation_contructor_wrong_arg_types
(planar.test.test_transform.CAffineTestCase) ... ok
test_scale_constructor (planar.test.test_transform.CAffineTestCase) ... ok
test_shear_constructor (planar.test.test_transform.CAffineTestCase) ... ok
test_slice_last_row (planar.test.test_transform.CAffineTestCase) ... ok
test_str (planar.test.test_transform.CAffineTestCase) ... ok
test_sub (planar.test.test_transform.CAffineTestCase) ... ok
test_translation_constructor
(planar.test.test_transform.CAffineTestCase) ... ok
test_wrong_arg_type (planar.test.test_transform.CAffineTestCase) ... ok
test_zero_args (planar.test.test_transform.CAffineTestCase) ... ok
test_add (planar.test.test_transform.PyAffineTestCase) ... ok
test_almost_equals (planar.test.test_transform.PyAffineTestCase) ... ok
test_args_members_wrong_type
(planar.test.test_transform.PyAffineTestCase) ... ok
test_args_too_few (planar.test.test_transform.PyAffineTestCase) ... ok
test_args_too_many (planar.test.test_transform.PyAffineTestCase) ... ok
test_cant_invert_degenerate
(planar.test.test_transform.PyAffineTestCase) ... ok
test_column_vectors (planar.test.test_transform.PyAffineTestCase) ... ok
test_determinant (planar.test.test_transform.PyAffineTestCase) ... ok
test_equality (planar.test.test_transform.PyAffineTestCase) ... ok
test_getitem (planar.test.test_transform.PyAffineTestCase) ... ok
test_getitem_wrong_type (planar.test.test_transform.PyAffineTestCase) ... ok
test_gt (planar.test.test_transform.PyAffineTestCase) ... ok
test_identity_constructor (planar.test.test_transform.PyAffineTestCase)
... ok
test_imul_transform (planar.test.test_transform.PyAffineTestCase) ... ok
test_imul_vector (planar.test.test_transform.PyAffineTestCase) ... ok
test_inverse (planar.test.test_transform.PyAffineTestCase) ... ok
test_is_conformal (planar.test.test_transform.PyAffineTestCase) ... ok
test_is_degenerate (planar.test.test_transform.PyAffineTestCase) ... ok
test_is_orthonormal (planar.test.test_transform.PyAffineTestCase) ... ok
test_is_rectilinear (planar.test.test_transform.PyAffineTestCase) ... ok
test_itransform (planar.test.test_transform.PyAffineTestCase) ... ok
test_len (planar.test.test_transform.PyAffineTestCase) ... ok
test_lt (planar.test.test_transform.PyAffineTestCase) ... ok
test_members_are_floats (planar.test.test_transform.PyAffineTestCase) ... ok
test_mul_by_identity (planar.test.test_transform.PyAffineTestCase) ... ok
test_mul_transform (planar.test.test_transform.PyAffineTestCase) ... ok
test_mul_vector (planar.test.test_transform.PyAffineTestCase) ... ok
test_mul_vector_seq (planar.test.test_transform.PyAffineTestCase) ... ok
test_mul_wrong_type (planar.test.test_transform.PyAffineTestCase) ... ok
test_repr (planar.test.test_transform.PyAffineTestCase) ... ok
test_rmul_vector (planar.test.test_transform.PyAffineTestCase) ... ok
test_rotation_constructor (planar.test.test_transform.PyAffineTestCase)
... ok
test_rotation_constructor_quadrants
(planar.test.test_transform.PyAffineTestCase) ... ok
test_rotation_constructor_with_pivot
(planar.test.test_transform.PyAffineTestCase) ... ok
test_rotation_contructor_wrong_arg_types
(planar.test.test_transform.PyAffineTestCase) ... ok
test_scale_constructor (planar.test.test_transform.PyAffineTestCase) ... ok
test_shear_constructor (planar.test.test_transform.PyAffineTestCase) ... ok
test_slice_last_row (planar.test.test_transform.PyAffineTestCase) ... ok
test_str (planar.test.test_transform.PyAffineTestCase) ... ok
test_sub (planar.test.test_transform.PyAffineTestCase) ... ok
test_translation_constructor
(planar.test.test_transform.PyAffineTestCase) ... ok
test_wrong_arg_type (planar.test.test_transform.PyAffineTestCase) ... ok
test_zero_args (planar.test.test_transform.PyAffineTestCase) ... ok
planar.test.test_util.test_cached_property ... ok
test_almost_equals (planar.test.test_vector.CSeq2TestCase) ... ok
test_bool (planar.test.test_vector.CSeq2TestCase) ... ok
test_copy (planar.test.test_vector.CSeq2TestCase) ... ok
test_copy_subclass (planar.test.test_vector.CSeq2TestCase) ... ok
test_eq (planar.test.test_vector.CSeq2TestCase) ... ok
test_from_points (planar.test.test_vector.CSeq2TestCase) ... ok
test_get_bad_index (planar.test.test_vector.CSeq2TestCase) ... ok
test_get_bad_index_type (planar.test.test_vector.CSeq2TestCase) ... ok
test_get_bad_neg_index (planar.test.test_vector.CSeq2TestCase) ... ok
test_get_set_item (planar.test.test_vector.CSeq2TestCase) ... ok
test_imul_by_transform (planar.test.test_vector.CSeq2TestCase) ... ok
test_imul_incompatible (planar.test.test_vector.CSeq2TestCase) ... ok
test_init (planar.test.test_vector.CSeq2TestCase) ... ok
test_iter (planar.test.test_vector.CSeq2TestCase) ... ok
test_len (planar.test.test_vector.CSeq2TestCase) ... ok
test_mul_by_transform (planar.test.test_vector.CSeq2TestCase) ... ok
test_mul_incompatible (planar.test.test_vector.CSeq2TestCase) ... ok
test_ne (planar.test.test_vector.CSeq2TestCase) ... ok
test_set_bad_index (planar.test.test_vector.CSeq2TestCase) ... ok
test_set_bad_index_type (planar.test.test_vector.CSeq2TestCase) ... ok
test_unhashable (planar.test.test_vector.CSeq2TestCase) ... ok
test_add_array_to_other (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_add_arrays (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_add_arrays_of_different_length
(planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_add_incompatible (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_add_vector_to_array (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_almost_equals (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_append (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_append_insert_delete_many
(planar.test.test_vector.CVec2ArrayTestCase) ...
ok
test_append_many (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_ass_ext_slice (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_ass_ext_slice_wrong_size
(planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_ass_slice (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_ass_slice_wrong_type (planar.test.test_vector.CVec2ArrayTestCase)
... ok
test_bool (planar.test.test_vector.CVec2ArrayTestCase) ... ok
test_clamp (planar.test.test_vector.CVec2ArrayTestCase) ... planar.Vec2Array
Assertion failed: PlanarVec2_Check(self), file lib/planar/cvector.c,
line 1916
This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.
--
Jonathan Hartley Made of meat. http://tartley.com
tar...@tartley.com +44 7737 062 225 twitter/skype: tartley
1. See if you can reproduce the failure in isolation from the python
prompt, cd to build\lib.win32-2.7\ first if you don't have planar
installed. Something like this:
>>> from planar import Vec2Array
>>> a = Vec2Array([(1,2), (3,4)])
>>> a.clamp(1, 2)
>>> Vec2Array().clamp(1, 2)
2. If you comment out the assert statement in cvector.c and rebuild,
do the tests pass or crash somewhere else?
Thanks a lot for your help.
-Casey
-Casey
On Mon, Aug 23, 2010 at 3:51 AM, Jonathan Hartley <tar...@tartley.com> wrote:
PlanarVec2Array_Check(self), not PlanarVec2_Check(self)
And also the fact that assertions are turned off when I run my tests
doesn't help either. Hopefully I can enable it via an environment
variable or something, distutils is too dumb to let me pass in a
command-line argument.
Anyhow, I'll get a new release out with this fixed soon. Thanks very
much for the help!
-Casey
On Mon, Aug 23, 2010 at 3:51 AM, Jonathan Hartley <tar...@tartley.com> wrote:
Jonathan