Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Start the high-level layer: awkward.Array. (#28)
There is now a high-level layer, assignable and dressable types, and `StringBehavior` as a leading example. * Start PR #28 (skipping issue number). * All Content arrays get a 'type' parameter to override the bare type. * The 'type' can be assigned; placeholders for all checks. * Added 'FIXME' to all the places where Type::none() might need to be replaced. * REMOVED *Type::compatible because that will be checked against arrays, not other types. * Stub for tests. * Start developing the high-level Array. * awkward.Array.__repr__ * Corrected awkward.Array.__repr__ * Completed awkward.Array.__str__ and __repr__; they fit within GitHub and StackOverflow text boxes without scrolling. * Drop dangling '[' and ']' at the level of tokens, not characters. * String will be the first example of type-dressing. * Types have 'parameters' (dict) in Python. * Use JSON to ingest Records in __repr__ tests to avoid random key order in old versions of Python. * Developing dressed types; need to set visibility to 'hidden'. Is that a problem for MacOS? * Suppose all static libraries have hidden symbols. Is MacOS happy? * Try again: CMP0063 was preventing the visibility preset from taking effect. * Print out the CMake version to diagnose MacOS. * Explicit EXPORT_SYMBOL for the symbols that should be exported. * Declare shared_ptr containers for Slice and Iterator, to see if that affects their visibility issues in MacOS (*Type are now fine, which suggests the difference). * The new (smaller) set of symbol errors were all associated with a C++ test; applying the same visibility=hidden to the C++ tests.. * Finally back to DressedTypes: PyDress and PyDressParameters both compile. * DressedType can be constructed, but __repr__ doesn't work. * DressedType constructor, string representation, and equality-checking works. * DressedType constructor, string representation, and equality-checking works. * Type representations appear as 'string' and 'bytes'. * To go further, we must fix a few Type::none()s. * All *::shallow_copy now put type_ in the type slot. * Fix tests before major change. * [skip ci] Broke compilation; switching to laptop. * [skip ci] Compiles up to pyawkward.cpp. * [skip ci] Closer, but pyawkward.cpp still doesn't compile. * Compiles and tests pass. * Moved id_ and innertype_ up to Content (protected). * Replacing 'innertype' with 'type'. * Fixed compilation bug. * Should compile and pass tests now. * Single 'innertype' method for bare and dressed cases. * Correct wrapping and string representation. * Special case for Python 2.7 (string representations). * More fixes for Python 2.7. * Now fix the non-Python 2.7. * *::getitem_range, *::carry, and NumpyArray::contiguous* do not change type or lose type, but Content's creation of RegularArrays creates new ones without type. * Renamed Record* methods as a first step toward making some of them universal. * The 'numfields', 'fieldindex', 'key', 'haskey', 'keyaliases', and 'keys' methods are now defined for all Content types. * The 'numfields', 'fieldindex', 'key', 'haskey', 'keyaliases', and 'keys' methods are now defined for all Type classes. * *::getitem_field always drops Type. *::getitem_fields keeps Type if the keys retained are within the keys of that Type. * Filled in all FIXMEs for Type transformations. NumpyArray never changes Type because it is wrapped by the appropriate number of RegularTypes when the Type is queried. * Defined *Type::level, which drops DressedType and OptionType (through UnionTypes), but keeps everything else at the same level. * Defined *Type::shallow_equal. * Tested List*Array::accepts and RegularArray::accepts. * Finished up to but NOT INCLUDING RecordArray::accepts. * Finished implementing *Array::accepts, but haven't tested them all. * *Array::content and RecordArray::field should return a reference so that the user can modify its 'id' and 'type' more naturally. * Implemented all propagations down in *Array::settype (NOT TESTED). * Fixed 32-bit warning with clearer code. * Start tests for type propagation. * Strings work; this may finish off the PR. * Clean up test. Drop Python 3.4 support because Azure did. * Renaming and improved test_string2. * Fixed Python 2.7. * Try to fix the lack of 'pytest' on Windows. * Numba is not available in some parts of the testing matrix.
- Loading branch information