Release history

Release 1.8.0

Tuesday, 01 March, 2022 (tar, zip)

Just like 1.8.0rc7, but this is not a release candidate. See the release candidates for all the changes with respect to 1.7.0.

The first non-release candidate to drop Python 2.7 and 3.5, and the first to support Python 3.10.

(no pull requests)

Release 1.8.0rc7

Tuesday, 01 March, 2022 (pip, tar, zip)

@henryiii dropped wheel from pyproject.toml: PR #1322. Bumped pybind11 to 2.9.1: PR #1316. Avoided PyPI cuda wheel upload: PR #1313. Removed unnecessary static libraries from wheels: PR #1314.

@agoose77 added optiontype_outside_record option to PR #1308. Fixed typo in ArrayBuilder documentation: PR #1326.

Version 2.0 development:

@ioanaif high-level ak._v2.sort: PR #1309. ak.argcombinations and ak.combinations: PR #1307. ak.strings_astype: PR #1301. ak.cartesian and ak.argcartesian: PR #1317.

@jpivarski modified type-tracers to keep shape information when they can: PR #1312.

  • PR #1326: Docs: fix typo in documentation.

  • PR #1314: chore: remove extra files from the wheels.

  • PR #1313: ci: avoid PyPI cuda wheel upload.

  • PR #1316: chore: bump pybind11 to 2.9.1.

  • PR #1312: Keep as much length knowledge as possible in typetracers.

  • PR #1322: chore: wheel not required for setuptools PEP 517 (all-repos)

  • PR #1317: C++ refactoring: ak.cartesian, ak.argcartesian.

  • PR #1301: C++ refactoring: ak.strings_astype.

  • PR #1308: Feat: add optiontype_outside_record argument to

  • PR #1307: C++ refactoring: ak.argcombinations, ak.combinations.

  • PR #1309: C++ refactoring: ak.sort.

Release 1.8.0rc6

Wednesday, 23 February, 2022 (pip, tar, zip)

@agoose77 and @ianna found and fixed an indexing error in LayoutBuilder: PR #1303.

@jpivarski fixed lost behavior in ak.unzip (prompted by Coffea tests of 1.8.0rc5): PR #1301.

Version 2.0 development:

@ianna added high-level ak._v2.argsort and its tests: PR #1304.

@swishdiff fixed the awkward-cuda-kernels version number, so that it’s set by VERSION_INFO: PR #1306.

@jpivarski added Awkward → C++ iteration, very much like the existing Numba implementation: PR #1300.

  • PR #1310: Fix lost ‘behavior’ in ‘ak.unzip’.

  • PR #1300: Implement Awkward –> C++ with Cling.

  • PR #1306: Version of awkward_cuda should be tied with awkward.

  • PR #1304: C++ refactoring: ak.argsort.

  • PR #1303: Fix: do not increment field index for nested lists.

Release 1.8.0rc5

Monday, 21 February, 2022 (pip, tar, zip)

Bump version number to try to upload to PyPI again. ([1.8.0rc4 might have failed]( because of a resurgence of

(no pull requests)

Release 1.8.0rc4

Monday, 21 February, 2022 (pip, tar, zip)

@henryiii updated the Python style to take advantage of Python 3.6 and above (format strings!): PR #1244, #1246. Fixed a problem associated with building twice: PR #1254. Added shellcheck: PR #1243. Updated pytest config: PR #1255. Added dependabot: PR #1263. Updated black: PR #1267. Added nox and pylint support: PR #1262. Updated style using pylint: PR #1275.

@agoose77 and @ianna fixed a segfault in reducers on >= 4-dimensional arrays with axis != -1 (v1 and v2): PR #1274.

@jpivarski allowed ak.nan_to_num arguments to be arrays: PR #1298. This is a blocker for, motivating the final push toward 1.8.0 release.

Version 2.0 development:

@ioanaif implemented ak.type, ak.values_astype: PR #1234. Implemented ak.parameters: PR #1242. Implemented ak.with_field: PR #1292. Implemented ak.with_parameter: PR #1289. Implemented ak.full_like, ak.zeros_like, ak.ones_like: PR #1293. Implemented ak.without_parameters: PR #1297. Implemented ak.fields: PR #1296.

@ianna converted JSON serialization/deserialization to v2: PR #1207.

@swishdiff updated the Awkward-CUDA building infrastructure: PR #1270. Updated v2 kernel-calling to call CUDA kernels: PR #1276.

@agoose77 fixed parameters for flattening of RecordArrays: PR #1214. Added support for mixed array types in nplike.to_rectilinear (internal helper function): PR #1248. Fixed Bit/ByteMaskedArray’s simplify_optiontype: PR #1259. Added a missing usage of simplify_optiontype: PR #1279.

@douglasdavis fixed a typo: PR #1290.

@jpivarski fixed a performance issue in Content.completely_flatten: PR #1245. Updated the Numba extension for v2: PR #1240. Added ak.from_arrow_schema function: PR #1294.

  • PR #1299: Remove unnecessary line blank from the tops of almost all files .

  • PR #1298: Allow ak.nan_to_num arguments to be arrays.

  • PR #1296: ak.fields.

  • PR #1297: ak.without_parameters.

  • PR #1293: C++ refactoring: ak.full_like, ak.zeros_like, ak.ones_like.

  • PR #1275: style: pylint 1.

  • PR #1274: Fixing #1266 (in v1 and v2), possibly by reordering nextparents.

  • PR #1294: C++ refactoring: ak._v2.from_arrow_schema function.

  • PR #1289: C++ refactoring: ak.with_parameter.

  • PR #1292: C++ refactoring: ak.with_field.

  • PR #1290: typo.

  • PR #1276: This PR adds support to call kernels in CUDA from v2 Awkward Arrays.

  • PR #1249: Fix: support nested option types in ak.is_none (also: #1193, #1193)

  • PR #1279: Fix: simplify output in {Byte,Bit}MaskedArray.

  • PR #1277: [] pre-commit autoupdate.

  • PR #1240: Getting Numba to work for v2 arrays.

  • PR #1207: json de-/serialisation from/to string or file.

  • PR #1270: Add GHA to build CUDA Wheels and update the cuda build script.

  • PR #1262: chore: initial nox and pylint support.

  • PR #1267: style: update to first non-pre-release black!

  • PR #1265: Bump pypa/gh-action-pypi-publish from 1.4.2 to 1.5.0.

  • PR #1257: Add a .zenodo.json file to specify a set of authors.

  • PR #1264: Bump pypa/cibuildwheel from 1.12.0 to 2.3.1.

  • PR #1263: chore: add dependabot for actions.

  • PR #1259: Fix: fix ByteMaskedArray.simplify_optiontype()

  • PR #1258: Remove distutils reference in test (now an error).

  • PR #1255: chore: update pytest config, 6.0+

  • PR #1242: C++ refactoring: ak.parameters.

  • PR #1243: style: add shellcheck.

  • PR #1254: fix: building twice was broken.

  • PR #1248: Fix: support mixed array types in NumpyLike.to_rectilinear

  • PR #1246: style: further cleanup for Python 3.6+

  • PR #1244: style: pyupgrade to 3.6.

  • PR #1245: layout.completely_flatten should not concatenate (performance issue).

  • PR #1234: C++ refactoring: ak.type and ak.values_astype.

  • PR #1214: Fix: drop parameters for flattened RecordArray.

Release 1.8.0rc3

Thursday, 20 January, 2022 (pip, tar, zip)

Reverted the PowerPC build: PR #1239.

  • PR #1239: Revert “Build wheels for ppc64le (#1224)”

Release 1.8.0rc2

Thursday, 20 January, 2022 (tar, zip)

@ianna fixed the intermittent MacOS segfault, which was a bug on all architectures, v1 and v2, though it only showed up in MacOS v2 tests: PR #1232.

@henryiii split the build/deploy procedure between CPython and PyPy to specify which architecture/platform/version combinations to build with more granularity: PR #1237.

@jpivarski dropped Windows 32 Python 3.10 test and musllinux in deployment: PR #1212.

@chrisburr added wheels for ppc64le: PR #1224.

@swishdiff updated the generate-cuda script (only works in Python >= 3.8, but it’s a developer tool, used offline, and not for much longer before CUDA source code will be maintained by hand): PR #1231.

Version 2.0 development:

@ioanaif implemented v2 ak.ravel: PR #1222, ak.local_index: PR #1221, ak.mask: PR #1219, ak.where: PR #1220, ak.flatten: #1217. ak.num: PR #1226, PR #1225, ak.pad_none: PR #1229, and ak.with_name: PR #1233.

@jpivarski removed all v1_to_v2 conversions from v2 tests, so that the transition will be easier (clean break): PR #1211. Fixed handling of boolean slices in nested lists while addressing a type-tracer missing feature raised by @douglasdavis: PR #1215. Made highlevel __repr__ safe for type-tracers: PR #1218.

@martindurant caught a few more typos: PR #1227, actually got merged as PR #1228.

  • PR #1233: C++ refactoring: ak.with_name.

  • PR #1231: Updated the generate-cuda script. Works for py >= 3.8.

  • PR #1224: Build wheels for ppc64le.

  • PR #1237: Remove Windows 32-bit from the Python 3.10 build.

  • PR #1229: C++ refactoring: ak.pad_none.

  • PR #1232: macos segfault bugfix.

  • PR #1225: C++ refactoring:

  • PR #1228: Redo PR #1227: fixing ‘emptyArray’ typo.

  • PR #1226: C++ refactoring: ak.num.

  • PR #1217: C++ refactoring: ak.flatten.

  • PR #1220: C++ refactoring: ak.where.

  • PR #1223: Restore pybind11 2.9.0.

  • PR #1218: Make highlevel __repr__ safe for typetracers.

  • PR #1219: C++ refactoring: ak.mask.

  • PR #1221: C++ refactoring: ak.local_index.

  • PR #1222: C++ refactoring: ak.ravel.

  • PR #1211: Removed v1_to_v2 from all v2 tests. (also: #962)

  • PR #1215: Fixed handling of list-nested boolean slices.

  • PR #1212: Drop Win32 Py3.10 test and musllinux in deployment.

  • PR #1213: [] pre-commit autoupdate.

Release 1.8.0rc1

Friday, 07 January, 2022 (tar, zip)

Dropped support for Pythons 2.7 and 3.5: PR #1182. From now on, Awkward Array only supports Python 3.6 and up.

@henryiii added Python 3.10 to testing: PR #1186. Bumped pybind11 to version 2.8.0: PR #1011. To 2.9.0: PR #1199. Included a Numba release candidate for Python 3.10: PR #1188.

@ianna replaced std::shared_ptr with std::unique_ptr in ArrayBuilder and also removed a pointer assignment from a hot loop for a performance increase: PR #1155. Added diagrams for future tutorials: PR #948.

@agoose77 improved ak.packed to additionally project IndexedArrays: PR #1195.

@BioGeek fixed a typo in the documentation: PR #1187.

@jpivarski fixed a bug in ak.unflatten: PR #1178. Added an exception for an unworkable case in ak.unzip: PR #1179. Fixed ak.to_numpy with RegularArray of size zero and non-zero length: PR #1180. Fixed NumpyArray::numbers_to_type: PR #1175. Fixed zeros in RegularArray shape: PR #1181. Fixed a typo: PR #1172. Removed distutils dependence: PR #1196. Fixed ak.singletons for non-optional data: PR #1197. Extended the default case of NEP 18 to allow arguments to be non-array iterables: PR #1198. Improved an error message in Content::axis_wrap_if_negative: PR #1202. Filled ak._v2 with the symbols that will eventually be in ak: PR #1208.

Version 2 development:

@jpivarski simplified type-tracers, so they no longer try to know their lengths: PR #1183 and #1184. Implemented v2 to_list and switched all v2 tests to use it: PR #1201 and #1203. Ensured that v2 to_numpy is done: PR #1204. Fixed up reducers (including non-reducers) and moved a lot of tests from v1 to v2: PR #1206.

  • PR #1188: ci: try Numba RC on 3.10.

  • PR #1199: chore: bump to pybind11 2.9.0.

  • PR #1210: docs: add BioGeek as a contributor for doc.

  • PR #1208: ak._v2 namespace is now filled with the right symbols.

  • PR #1206: Highlevel non-reducers and improved testing/fixes for reducers.

  • PR #1204: ak._v2.operations.convert.to_numpy is done.

  • PR #1203: Don’t let ak.to_list act on v2 arrays (finishing #1201).

  • PR #1202: Better error message for Content::axis_wrap_if_negative.

  • PR #1201: Implemented v2 ak.to_list and switched all v2 tests to use it.

  • PR #1198: Allow non-array iterables in __array_function__.

  • PR #1197: Fix ak.singletons for non-optional data.

  • PR #1196: Remove distutils dependence.

  • PR #1195: Fix: _pack_layout should also pack projected index arrays.

  • PR #1194: [] pre-commit autoupdate.

  • PR #948: pictures for a tutorial.

  • PR #1155: ArrayBuilder: replace shared with unique.

  • PR #1011: chore: bump pybind11 to 2.8.0.

  • PR #1186: feat: bump cibuildwheel, add Python 3.10.

  • PR #1187: Remove duplicated text.

  • PR #1184: Drop all length information from TypeTracer, get all tests working again.

  • PR #1183: Bugs found by the Dask project: broaden type-tracers’ applicability.

  • PR #1172: First bug found by @martindurant.

  • PR #1182: Remove Python 2.7 and 3.5 support.

  • PR #1181: Fixed zeros in RegularArray shape.

  • PR #1175: NumpyArray::numbers_to_type must use flattened_length, not length.

  • PR #1180: ak.to_numpy with RegularArray of size zero and non-zero length.

  • PR #1179: Raise ValueError for incompatible union types in ak.unzip.

  • PR #1178: Fix leading zeros in ak.unflatten.

  • PR #1174: [] pre-commit autoupdate.

Release 1.7.0

Thursday, 02 December, 2021 (pip, tar, zip)

The 1.7.x series is the last to support Python 2.7 and Python 3.5. From 1.8.0 onward, only Python 3.6 and above will be supported.

@ianna fixed a division-by-zero bug: #1168 and #1169.

@jpivarski applied the 1.7.0 deprecation (see [Roadmap]( #1118. Enabled codecov: #1120. Updated Azure’s Windows VM: #1129. Fixed order in RecordForm.contents property: #1166. Fixed Parquet reading for files with zero RecordBatches: #1170.

Version 2 development:

@ioanaif: #1082, #1116, #1130, #1137, #1145, #1147, #1148, #1161,

@ianna: #1111, #1141, #1140, #1138, #1142, #1149, #1150, #1164,

@ctrl-stormy: #1135,

@jpivarski: #1117, #1119, #1121, #1122, #1123, #1124, #1125, #1131, #1132, #1134, #1143, #1146, #1154, #1153, #1156, #1159, #1160, #1162, #1165,

  • PR #1170: Parquet files with zero record batches.

  • PR #1169: remove debug printout.

  • PR #1161: C++ refactoring: ak.concatenate.

  • PR #1164: C++ refactoring: to and from json.

  • PR #1168: avoid division by zero.

  • PR #1166: Preserve order in v1 RecordForm.contents.

  • PR #1165: Second try at specialized JSON: RapidJSON + custom assembly.

  • PR #1162: ak.from_json_schema as a demonstration of generating AwkwardForth from a type-schema.

  • PR #1163: [] pre-commit autoupdate.

  • PR #1148: C++ refactoring: flatten()

  • PR #1160: Better decompiled print-outs for ‘case’ and ‘enum’.

  • PR #1159: Add JSON commands to AwkwardForth.

  • PR #1147: C++ refactoring: fillna() operation.

  • PR #1145: C++ refactoring: numbers_to_type()

  • PR #1150: C++ refactoring: to_numpy()

  • PR #1156: Replace leaf Nones with +-inf for argmin/argmax axis=None.

  • PR #1153: ‘behaviorof’ should take Array, not layouts, and setting ‘behavior’ should set the ‘__class__’.

  • PR #1154: Arrow Tables should preserve parameters.

  • PR #1149: C++ refactoring: handle datetime and timedelta.

  • PR #1142: C++ refactoring: prepared high-level ArrayBuilder and reducer functions, though still untested.

  • PR #1146: primitive_to_dtype and dtype_to_primitive as functions.

  • PR #1138: C++ refactoring: nbytes.

  • PR #1143: C++ refactoring: NumPy ufuncs for v2.

  • PR #1137: C++ refactoring: num()

  • PR #1134: C++ refactoring: to_buffers and from_buffers.

  • PR #1140: remove workaround, use merge.

  • PR #1141: fix unionarray sort and enable tests.

  • PR #1135: C++ Refactoring: Implement rpad and rpad_and_clip.

  • PR #1111: C++ refactoring: unique and is_unique.

  • PR #1128: [] pre-commit autoupdate.

  • PR #1132: C++ refactoring: utility methods for high-level functions in v2.

  • PR #1130: Removed ‘simplify_uniontype’ from content – already in unionarray.

  • PR #1131: High-level to/from_arrow functions for v2.

  • PR #1129: Update Azure Pipeline’s Windows VM image and adapt to Arrow and Numba updates.

  • PR #1125: C++ refactoring: to_arrow and from_arrow in v2.

  • PR #1124: Make the commented-out code in v2 a better guide.

  • PR #1123: Renamed record ‘key’ -> ‘field’ to be consistent with high-level.

  • PR #1122: Working on the high-level ak.Array for v2. (also: #838)

  • PR #1121: Stubs for high-level interface in the src/awkward/_v2 directory.

  • PR #1120: Enable codecov.

  • PR #1116: C++ refactoring: project - bit/byte/unmaskedarray.

  • PR #1119: Remove v2 VirtualArray (to try using Dask only).

  • PR #1118: Prepare the 1.7.0 deprecation (ak.fill_none default axis).

  • PR #1117: Move v2 tests into their own directory.

  • PR #1082: C++ refactoring: Merge and Simplify Types.

Release 1.5.1

Thursday, 14 October, 2021 (pip, tar, zip)

@chrisburr made the build respect CMAKE_ARGS if it’s set by the environment: PR #1091.

@jpivarski fixed mask_identity=False, so that it never returns an option type: PR #1108. Also fixed parameters, which truncated floats to ints in its string representation: PR #1114.

@agoose77 added a check to from_json to not attempt to find very large strings as filenames: PR #1085.

The v2 project:

@ianna added sorting: PR #1072, reducers: PR #1099, argsort: PR #1092.

@stormiestsin added validityerror: PR #1101.

@jpivarski added a TypeTracer: PRs #1109, #1110.

  • PR #1114: Fixes copyjson casting bug.

  • PR #1110: Implemented the type tracer for Awkward-Dask. (also: #959, #1031)

  • PR #1112: [] pre-commit autoupdate.

  • PR #1092: C++ refactoring: argsort.

  • PR #1099: C++ refactoring: reducers.

  • PR #1109: “The Good Parts” of #1095, which I’m closing.

  • PR #1085: Fix: add utility to check whether a string is a filepath. (also: #1084)

  • PR #1108: Fixed #1071: mask_identity=False should not return option type.

  • PR #1102: [] pre-commit autoupdate.

  • PR #1101: C++ Refactoring: Implement validityerror for all array types.

  • PR #1094: Little fixes from meeting with @ianna.

  • PR #1072: C++ refactoring: sort.

  • PR #1091: Respect CMAKE_ARGS if set by the environment.

Release 1.5.0

Sunday, 12 September, 2021 (pip, tar, zip)

This is the same as [1.5.0rc2](; most of the changes went into [1.5.0rc1](

(no pull requests)

Release 1.5.0rc2

Sunday, 12 September, 2021 (pip, tar, zip)

Reverting the spelling of ak.nplike.NumPyak.nplike.Numpy, etc. (including CuPyCupy) to avoid needlessly breaking interfaces.

  • PR #1089: Revert ‘NumPy’ spelling to ‘Numpy’ in code only.

  • PR #1087: docs: add bmwiedemann as a contributor for code.

  • PR #1088: docs: add SantamRC as a contributor for test.

Release 1.5.0rc1

Thursday, 09 September, 2021 (pip, tar, zip)

@matthewfeickert unrestricted the jaxlib version bounds, thanks to a fix that he prompted in JAX: PR #988.

@agoose77 added support for n-dimensional NumpyArrays in ak.where: PR #980. Added axis parameter to ak.fill_none: PR #917. Added np.ravel: PR #985. Fixed ak.from_buffers to support empty buffers: PR #1009. Fixed ak.packed for RegularArrays with size=0: PR #1008. Fixed to not convert regular to jagged: #1013. Clarified the documentation of left and right broadcasting: PR #1016. Fixed ak.broadcast_arrays by setting numpy_to_regular=True: PR #1019. Added support for ak.Record in ak.packed: PR #1021. Fixed #1026, jagged slicing of a multidimensional NumpyArray: PR #1029. Added a name parameter to ak.mixin_class: PR #1030.

@henryiii touched up PR #1004. Added a spell-checker in pre-commit that fixed a lot of spelling mistakes in comments and documentation: PR #1003.

@bfis fixed the stack level of the deprecation warning: PR #1058.

@bmwiedemann made the source code reproducible by allowing the build date to be overridden by SOURCE_DATE_EPOCH: PR #1050.

@nsmith- optimized common array slice (“take”) operations: PR #1062.

@SantamRC added a better set of kernel unit tests to continuous integration, which will be important for testing GPU kernels: PRs #1065 and #1081.

@jpivarski added a default for NEP-18, so now any NumPy function can be used with Awkward Arrays, as long as the Awkward Array can be cast as NumPy (i.e. is rectilinear): PR #1005. Reverted the ill-conceived #694, SliceVarNewAxis: PR #1028. Made ak.Record iterable (iterates over _field names_, like dict): PR #1061.

Also, fixed the UnionForm bug described in #770 and #930: PR #991. Fixed #546, ak.fill_none losing the replacement’s dtype: PR #995. Fixed two bugs in #992: double-masking of reducers and unmasking of ak.ptp: PR #994. Fixed ak.Array.__dir__ to include methods/properties of overridden classees: PR #993. Fixed #982 by accounting for another kind of “gap” in nonlocal reducers: PR #997. Fixed #998 and #1000, ak.argmax for ListOffsetArray with nonzero start: PR #1001. Fixed ak.fill_none fill value’s handling of NumPy dimension: PR #1056. Fixed ak.to_numpy for structured arrays that are also masked arrays: PR #1067.

Continued work on Awkward version 2.x (in the hidden ak._v2 submodule). The following PRs are quick to list, but represent large code additions.

@ioanaif finished __getitem__ for all array types: PRs #959, #1031, #1036, and #1073.

@ianna refactored ArrayBuilder to not depend on C++ that will be removed in v2: PRs #977, #1045, and #1063.

@stormiestsin implemented _localindex in v2: PR #1059. And combinations: PR #1074.

@jpivarski renamed _getitem_array as _carry and made it take an Index: PR #1025. Added VirtualArray: PR #1079.

  • PR #1086: docs: add matthewfeickert as a contributor for maintenance.

  • PR #1081: Data for Remaining Kernel Functions.

  • PR #1003: chore: fix spelling and check in pre-commit.

  • PR #1070: Try fixing the search box by upgrading sphinx-rtd-theme.

  • PR #1079: Implementing VirtualArray in Awkward v2.

  • PR #1073: C++ refactoring: handling ListOffsetArray and IndexedOptionArray in _getitem_next.

  • PR #1074: C++ refactoring: Implementing combinations.

  • PR #1065: Unit Tests.

  • PR #1078: [] pre-commit autoupdate.

  • PR #1063: LayoutBuilder template using either ForthMachine32 or ForthMachine64 and a tutorial.

  • PR #1036: C++ refactoring: testing_starting _getitem_next.

  • PR #1059: C++ refactoring: Implementing _localindex.

  • PR #1067: Fixes #1066, ak.to_numpy can return masked-structured arrays.

  • PR #1045: LayoutBuilder refactoring.

  • PR #1062: Optimizing common take operations.

  • PR #1061: Explicit ak.Record.__iter__ (iterates over fields, like dict) and better ak.from_iter handling of nested ak.Record and ak.Array.

  • PR #1050: Allow to override build date with SOURCE_DATE_EPOCH.

  • PR #1058: Fix deprecation warning stack level.

  • PR #1056: Fix ak.fill_none fill value’s handling of NumPy dimension.

  • PR #1054: Remove debugging printout (2).

  • PR #1030: Feat: add name parameter to mixin_class

  • PR #1051: Remove debugging printout.

  • PR #977: ArrayBuilder refactoring.

  • PR #1031: C++ refactoring: starting _getitem_next.

  • PR #1035: docs: add ioanaif as a contributor for code, test.

  • PR #1029: Fixed #1026; jagged slicing of multidim NumpyArray.

  • PR #1028: Reverting #694: SliceVarNewAxis.

  • PR #1025: Rename _getitem_array as _carry and have it take Index.

  • PR #1024: Chore: correct spelling of “operation”

  • PR #1023: Docs: make link to layout.

  • PR #1021: Feat: pack Record``s in ``ak.packed

  • PR #1019: Fix: set numpy_to_regular=True in broadcast_arrays (also: #1017)

  • PR #959: C++ refactoring: _getitem_array implementation.

  • PR #1018: [] pre-commit autoupdate.

  • PR #1016: Documentation: clarify left & right broadcasting.

  • PR #1013: Bugfix: do not use regular_to_jagged in (also: #1012)

  • PR #1008: Bugfix: fix ak.packed for RegularArray``s with ``.size=0 (also: #1006)

  • PR #1004: docs: touch up contributing.

  • PR #1009: Bugfix: support empty buffers in from_buffers (also: #1007)

  • PR #1005: Fixes #595 and #630; adds a default for NEP-18.

  • PR #985: Feature: add np.ravel

  • PR #1001: Fixes #998 and #1000; argmax for ListOffsetArray with nonzero start. Also optimizes toListOffsetArray64(true).

  • PR #997: Fixes #982 by accounting for an additional kind of ‘gap’ in nonlocal reducers.

  • PR #993: Fix high-level ak.Array.__dir__ to include methods and properties of overridden classes.

  • PR #994: Fixes two bugs in #992: double-masking of reducers and unmasking of ak.ptp.

  • PR #995: Fixes #546, ak.fill_none losing the replacement value’s dtype.

  • PR #917: Feature: add axis parameter to ak.fill_none (also: #920)

  • PR #991: Fixed bug #770, #930: not a policy issue; UnionForm::purelist_parameter was incorrectly comparing its contents’ direct parameters, rather than their purelist_parameters.

  • PR #987: Feature: add GitHub Issue Forms.

  • PR #980: Bugfix: support n-dim NumpyArray``s in ``ak.where

  • PR #988: fix: Unrestrict jaxlib upper bound and exclude jaxlib v0.1.68. (also: #963)

Release 1.4.0

Friday, 02 July, 2021 (pip, tar, zip)

Identical to 1.4.0rc6.

(no pull requests)

Release 1.4.0rc6

Thursday, 01 July, 2021 (pip, tar, zip)

@agoose77 fixed ak.mask for multidimensional NumpyArrays (PR #976).

I think this is the last one before the real release.

  • PR #976: Bugfix: support multidimensional NumPy mask arrays in ak.mask (also: #975, #975)

Release 1.4.0rc5

Thursday, 01 July, 2021 (pip, tar, zip)

@agoose77 fixed ak.flatten for NumpyArray with len(shape) > 1 (PR #974).

@ianna fixed sorting with missing values at axis=0 and missing values in ak.argsort at any axis (PR #946).

  • PR #946: sorting an indexed option array in axis0 bug fix; argsort to account ``None``s.

  • PR #974: Bugfix: fix #973.

Release 1.4.0rc4

Thursday, 01 July, 2021 (pip, tar, zip)

@agoose77 fixed ak.unflatten with axis=0 by refactoring the internal function ak._util.recursively_apply, which also simplifies the implementation of ak.unpacked (PR #972).

@jpivarski added a missing import awkward._io (PR #970).

  • PR #972: Feature: add layout transformer & simplify unpacked.

  • PR #970: Fix #968, missing ‘import awkward._io’.

Release 1.4.0rc3

Wednesday, 30 June, 2021 (pip, tar, zip)

1.4.0rc3 is to make sure that the PYPI_PASSWORD is now correctly set and that the package can be built from source. (Previously, it was missing the kernel-specification.yml that is now required for generating a header and a Python file in the source.)

As with all release candidates, it’s going to be deleted someday. Only pin to non-pre releases!

(no pull requests)

Release 1.4.0rc2

Tuesday, 29 June, 2021 (pip, tar, zip)

@henryiii moved deployment from Azure to GitHub Actions.

@jpivarski made the kernel headers (C and Python) generate as part of the build.

  • PR #966: Make dev/ part of the build process and add Python ctypes signatures as well.

  • PR #961: ci: move to cibw on GHA.

Release 1.4.0rc1

Friday, 25 June, 2021 (pip, tar, zip)

@ianna, @agoose77, and @jpivarski added to or corrected the documentation (PRs #891, #897, #925, #931, #943, #947, #951).

@agoose77 added ak.ptp (PR #890), added support for Arrow FixedSizeListType (PR #907), implemented ak.packed (PRs #918, #912, #937), fixed up ak.from_parquet (PRs #923, #935) and ak.unflatten (PR #922), corrected nbytes (PR #928), updated the deprecation system (PR #929), fixed ak.with_cache (PR #942), and did internal refactoring (PR #952).

@ianna added support for date-times (PRs #835, #915, #916), renamed TypedArrayBuilder → LayoutBuilder, thus completing it as it doesn’t need to have a high-level interface (PR #924).

@ioanaif started the C++ → Python refactoring project with help from @agoose77 and @jpivarski (PRs #884, #895, #896, #914, #957, #958, #962).

@henryiii fixed an inexplicable bug in manylinux1 (PR #955), made the tests directory-independent (PR #953), and updated CMake infrastructure (PR #954). ~~I think this will be the first deployment using GitHub Actions, rather than Azure!~~ (No, that’s PR #961, which is not included in this release.)

@jpivarski fixed random bugs (PRs #901, #904, #950) and made __getitem__ return Python str when they’re strings (PR #874), pinned jaxlib<0.1.68 because of an intermittent MacOS segfault (PR #963; see connected discussion).

  • PR #963: Test jaxlib<0.1.68 for segfault.

  • PR #962: C++ refactoring: convert and compare v1 and v2 arrays; renamed v2 recordarray -> keys.

  • PR #958: C++ refactoring: new Forms must accept old Form JSON.

  • PR #957: C++ refactoring: Type and Form classes - touchups.

  • PR #954: fix(setup): sync with cmake_example.

  • PR #953: tests: fix loading from any directory.

  • PR #914: C++ refactoring: Type and Form classes.

  • PR #955: fix: manylinux1 couldn’t take None/newaxis.

  • PR #951: Writing documentation on 2021-06-23.

  • PR #952: Refactor: use maybe_wrap in source.

  • PR #950: Appropriate FileNotFoundError for ak.from_json.

  • PR #947: How much documentation can I get done today?

  • PR #935: Separate from_parquet into different routines.

  • PR #943: Tutorial documentation on 2021-06-18. (also: #704)

  • PR #942: Bugfix: fix with_cache implementation.

  • PR #937: Bugfix: truncate ListOffsetArray contents.

  • PR #931: Writing tutorial documentation 2021-06-16.

  • PR #924: rename TypedArrayBuilder to LayoutBuilder.

  • PR #896: C++ refactoring: Content classes.

  • PR #929: Refactor: remove ak.deprecations_as_errors

  • PR #874: Should strings from __getitem__ be Python str? (and bytes?)

  • PR #922: Bugfix: use ak.packed in ak.unflatten (also: #910, #910)

  • PR #928: Bugfix: return correct nbytes value for multidimensional NumPy arrays. (also: #927, #927)

  • PR #923: Bugfix: check for file-like objects in from_parquet

  • PR #925: Added ‘[todo]’ to unwritten documentation, added a few nodes, and added description of ak.packed to

  • PR #916: ak.values_astype support dtype specifier np.datetime64 to convert ?int or ?float typed unix timestamps to datetime64

  • PR #912: Feature: add ak.packed

  • PR #919: [] pre-commit autoupdate.

  • PR #918: Feature: add pass_apply argument to util.

  • PR #915: revert to datetime64 and timedelta64.

  • PR #835: support ‘datetime64’ and ‘timedelta64’ types.

  • PR #907: WIP: initial support for reading pyarrow.lib.FixedSizeListType

  • PR #904: ArrayView expects contiguous NumpyArrays, so make sure they’re contiguous.

  • PR #901: Distinguish cache keys for non-leaf nodes.

  • PR #897: More precise Content documentation.

  • PR #895: Fixes #894.

  • PR #884: C++ refactoring: Index and Identities (Identifier)

  • PR #890: Feature: add ak.ptp

  • PR #891: Documentation: fix typo in reducers.

Release 1.3.0

Tuesday, 01 June, 2021 (pip, tar, zip)

@ianna fixed class names in the documentation (PR #860).

@agoose77 fixed ak.is_none (PR #864).

@drahnreb made Parquet lazy-loading only build Forms for requested columns (PR #867).

@agoose77 and @drahnreb together made idioms like x[“z”] = None work correctly by assigning a column of Nones (PR #880).

@jpivarski fixed some union-simplification issues in getitem-field (PR #870). Also fixed various bugs to enable Numba JIT-compiled functions to iterate over VirtualArrays created by lazy-reading Parquet (PR #871). Fixed a relic of the ptr().get()data() transition for kernel interfaces (PR #877). Fixed some null-type issues with Arrow/Parquet columns (PR #878). And fixed matrix multiplication of a vector as an Awkward record (PR #868).

  • PR #868: Matrix multiplication of a non-array vector. (also: #881)

  • PR #885: [] pre-commit autoupdate.

  • PR #880: Fix #879.

  • PR #878: Fix some issues with null-typed Arrow/Parquet columns.

  • PR #877: Buffer pointers should come from data(), not ptr().get(). (also: #876)

  • PR #871: Fixes for Parquet, Numba, Dask test.

  • PR #870: Simplify UnionArray::getitem_field(s) and ak.flatten axis=None.

  • PR #869: [] pre-commit autoupdate.

  • PR #867: Fix #865, only build forms for columns that are requested in lazy mode (ak.from_parquet)

  • PR #864: Bugfix: possible fix for #863.

  • PR #860: corrected the class names in documentation.

  • PR #862: [] pre-commit autoupdate.

Release 1.2.3

Monday, 10 May, 2021 (pip, tar, zip)

Same as [1.3.0rc4]( Deploying as a full release because issue #859 was encountered twice (before as #836), so it’s a common problem.

(no pull requests)

Release 1.3.0rc4

Monday, 10 May, 2021 (tar, zip)

@HenryDayHall fixed a string inequality comparison (#826) and added a dtype argument to ones/zeros/full_like functions (#814).

@agoose77 fixed an error in matrix multiplication when one array is NumPy (#847).

@henryiii cleaned up the (#831), the setup.cfg (#834), and CMakeLists (#833).

@trickarcher finished JAX integration, merging it into the main codebase (#793 and #855).

@ianna finished TypedArrayBulder implementation, leaving only the high-level interface (#769), fixed an argsort bug with masked arrays (#850), and arrays of complex types in concatenate (#858).

@jpivarski fixed unflattening axis>0 with a scalar (#820), ak.Record’s “promote to subclass” (#825), adding a handler for pyarrow’s DataType(null) and ndim != 1 boolean arrays in to_arrow (#837), allowed scalars in to make an ak.Record if they’re _all_ scalars (#839), and removed “ignore” from some Flake8 complaints (#844).

  • PR #858: arrays of complex types concatenate.

  • PR #856: [] pre-commit autoupdate.

  • PR #833: chore: cmake cleanup.

  • PR #834: style: setup.cfg formatting.

  • PR #855: This PR adds documentation for differentiation using JAX.

  • PR #850: masked array sort and argsort bug fix.

  • PR #847: Bugfix: fix #846 - matrix multiplication with numpy array.

  • PR #851: [] pre-commit autoupdate.

  • PR #848: docs: add agoose77 as a contributor.

  • PR #844: Removed “ignore” from some Flake8 complaints.

  • PR #793: This PR integrates JAX element wise differentiation into the main codebase.

  • PR #842: [] pre-commit autoupdate.

  • PR #839: Allow scalars in and make an ak.Record if they’re all scalars.

  • PR #837: Handle ndim != 1 bool arrays in to_arrow (and hence, Parquet).

  • PR #831: chore: cleanup

  • PR #814: Added dtype argument to ones/zeros/full_like functions.

  • PR #829: Handle Arrow’s DataType(null).

  • PR #827: docs: add HenryDayHall as a contributor.

  • PR #826: fixed string inequality comparison.

  • PR #769: Typed Array Builder from Form.

  • PR #825: Fix ak.Record’s promote to behavior.

Release 1.2.2

Monday, 12 April, 2021 (pip, tar, zip)

Like 1.3.0rc3, but also fixes issue #819: PR #820.

See release notes for 1.3.0rc1, 1.3.0rc2, 1.3.0rc3. This release comes _after_ those.

  • PR #820: Fixes issue #819: unflattening at axis>0 with a scalar.

Release 1.3.0rc3

Friday, 09 April, 2021 (tar, zip)

The result of broadcasting a UnionArray now includes all types of the original array, regardless of whether they appear in the broadcasted version. This fixes the types of empty arrays (so that + still works on custom behaviors, etc.). PR #816.

  • PR #816: Broadcast union types to all possibilities, even ones with no instances in the array.

Release 1.3.0rc2

Friday, 09 April, 2021 (tar, zip)

@ianna fixed ak.argsort’s type for empty arrays. PR #812.

  • PR #812: argsort bugfix for empty arrays.

Release 1.3.0rc1

Thursday, 08 April, 2021 (tar, zip)

Issue #805/PR #808, empty case when broadcasting UnionArrays.

  • PR #808: Issue #805: fix an empty case when broadcasting UnionArrays.

Release 1.2.1

Wednesday, 07 April, 2021 (pip, tar, zip)

@ianna fixed the data type of ak.argsort for empty arrays (it should always be integer, but was float in some cases). PR #803.

It fixes code like

`python good_leptons = good_leptons[ak.argsort(] `

in which good_leptons consists of empty lists.

  • PR #800: [] pre-commit autoupdate.

  • PR #803: argsort to return an index-type in the case that the input list array is empty.

Release 1.2.0

Thursday, 01 April, 2021 (pip, tar, zip)

Exactly the same as 1.2.0rc6.

(no pull requests)

Release 1.2.0rc6

Wednesday, 31 March, 2021 (tar, zip)

Fixed a bug from StackOverflow. PR #799.

  • PR #799: Forbid ‘pyarrow.lib.Tensor’ in ‘ak.to_parquet’.

Release 1.2.0rc5

Tuesday, 30 March, 2021 (tar, zip)

Fixed an edge case in ak.cartesian. PR #794.

Added a mechanism to cast objects __array_ufunc__ for scikit-hep/vector. PR #796.

  • PR #796: Add mechanism to cast objects before __array_ufunc__.

  • PR #795: Fixed #794, ak.cartesian on an empty array.

Release 1.2.0rc4

Thursday, 25 March, 2021 (tar, zip)

Fixed a subtle bug with lazy RecordArray carrying and parameters: PR #789.

Added ‘np.nan_to_num’ and ‘np.isclose’ for Vector: PR #790.

  • PR #790: Implement ‘np.nan_to_num’ and ‘np.isclose’ for Vector.

  • PR #789: When RecordArrays are lazily carried as IndexedArrays, the IndexedArrays shouldn’t copy the RecordArray parameters. Also, ‘with_name’ may be able to simplify some UnionArrays after homogenizing names.

Release 1.2.0rc3

Wednesday, 24 March, 2021 (tar, zip)

@reikdas added a parser to read type strings into type objects. Although this has many uses, its motivation is to construct types for TypedArrayBuilder. PRs #668, #773.

@ianna added steps toward the development of a TypedArrayBuilder, though it’s not done yet. PRs #690, #767, #781.

@trickarcher is developing autograd for elementwise operations in JAX. The main issue is to handle slices in the JAX-compiled or JAX-differentiated code block. PRs #765, #779.

@henryiii and @pre-commit-ci are improving the development environment. PRs #785, #786.

@jpivarski has been fixing bugs. PRs #762, #764, #766, #772, #776, 5999fbd, #784. The last of these, #787, is especially important because it prevents Awkward Array from _breaking_ other Numba extensions!

  • PR #787: Don’t prevent other Numba extensions from using operators.

  • PR #779: Adapt getitem of DifferentiableArray for JAX.

  • PR #785: [] pre-commit autoupdate.

  • PR #786: ci: cleanup and remove 3.9 restrictions.

  • PR #784: Disambiguate offsets-index cache keys when lazily reading Parquet.

  • PR #781: AwkwardForth: add an s” core word to define strings.

  • PR #773: Add type parser to main codebase.

  • PR #776: Fix bug raised on StackOverflow.

  • PR #767: Conceptual test of TypedArrayBuilder through AwkwardForth.

  • PR #772: Fixes #771; constructing Array with different length columns should raise error.

  • PR #668: Study writing a type parser for TypedArrayBuilder.

  • PR #766: Prevent combinations of characters (from a bug on Mattermost).

  • PR #690: array builder time profiler study.

  • PR #765: Consider this implementation of a DifferentiableArray for JAX.

  • PR #764: Fixes #763 by assigning a better type to EmptyArray::argsort_next.

  • PR #762: More documentation, starting with “how to build”.

Release 1.2.0rc2

Sunday, 21 February, 2021 (tar, zip)

Fixed ak.unflatten to include trailing 0 in its counts (in the structure on the left, if axis != 0 or partitioned, at all otherwise): PR #743.

Implemented row_groups parameter of ak.from_parquet: PR #748.

Added methods: ak.Array.to_list, ak.Record.to_list (synonym for tolist), and ak.Array.to_numpy: PR #750.

NumPy scalars iterated over as numbers: PR #751.

Better error message for bad concatenation: PR #752.

Fixed ak.num on PartitionedArrays: PR #757.

  • PR #760: Simplify ‘ak.to_arrow’ list handling.

  • PR #757: Fixes #756; ak.num on PartitionedArrays.

  • PR #755: Print ak.layout.RecordArray’s ‘length’ unequivocally to aid debugging.

  • PR #754: Minor tweak so that ak.unflatten works for CuPy arrays. This doesn’t count as support yet.

  • PR #752: Fixes #722; better error message for bad concatenation.

  • PR #751: Fixes #740; NumPy scalars should be iterated over as numbers.

  • PR #750: Added ‘ak.Array.to_list’, ‘ak.Array.to_numpy’, and ‘ak.Record.to_list’, and simplified the documentation to point to the functions they call.

  • PR #748: I had somehow forgotten to handle ‘row_groups’ in ‘ak.from_parquet’. Fixed now.

  • PR #743: ak.unflatten should include trailing zero-length counts in the array.

Release 1.2.0rc1

Saturday, 13 February, 2021 (tar, zip)

@drahnreb fixed several issues with categorical arrays and Arrow conversion: PR #727.

@jpivarski updated ak.unflatten to have an axis parameter (PR #731), and to make it work on PartitionedArrays (#732), added ak.run_lengths (#733) and ak.strings_astype (#734), and implemented ak.argsort for strings, fixing some issues with ak.sort for strings (#736).

Significantly, the depth of arrays was changed to not count the inner dimension of strings: PR #736. Now an unnested array of strings has the same depth as an unnested array of integers: the dimension of the lists comprising the strings themselves doesn’t count.

  • PR #738: docs: add drahnreb as a contributor.

  • PR #736: Implement argsort for strings.

  • PR #737: Define the depth of an array of strings to be 1.

  • PR #735: Allow ak.run_lengths to recognize strings as distinguishable values.

  • PR #734: Implemented ‘ak.strings_astype’ to convert strings into numbers.

  • PR #733: Implemented ‘ak.run_lengths’ to enable group-by operations.

  • PR #732: Allow ‘ak.unflatten’ to be used on PartitionedArrays.

  • PR #731: Add an ‘axis’ parameter to ‘ak.unflatten’.

  • PR #727: fix some issues of categorical arrays. (also: #674)

Release 1.1.2

Thursday, 11 February, 2021 (pip, tar, zip)

The fix that motivates this patch release is @henryiii’s repair of the SDist distribution: PR #720. The addition of dlpack wasn’t included in the source distribution, so pip install awkward without an available wheel was failing due to not having all the headers it needed to compile.

Also fixed jagged slices: issue #723, PRs #725 and #729, as well as a segfault in ak.flatten: issue #724, PR #726.

  • PR #729: Only ‘simplify’ed option-type and union-type arrays are now considered valid.

  • PR #726: Fixed #724, a segfault in ak.flatten.

  • PR #725: Ensure that a jagged slice fits the array’s length.

  • PR #720: fix: add missing files to the manifest, include a check.

Release 1.1.1

Tuesday, 09 February, 2021 (pip, tar, zip)

New patch release motivated by a bug discovered in Uproot’s tests: PR #719. (From now on, Uproot will test Awkward release candidates.)

Also, #717 adds an optional behavior argument to every function that takes a highlevel=True/False.

Also from now on, only critical bug-fixes (like this one) will be patch releases and other updates will all go into release candidates for the next non-patch release (e.g. 1.2.0, [scheduled for 2021-04-01](

  • PR #719: Prevent nullptr in PyArrayGenerator::caches.

  • PR #717: Every function with ‘highlevel=True’ gets ‘behavior=None’, which overrides behaviors from the input arrays. Also dropped ‘ak.is_unique’ because it isn’t a well-designed high-level function.

Release 1.1.0

Tuesday, 09 February, 2021 (pip, tar, zip)

This is the February 2021 release (see Roadmap).

No change with respect to 1.1.0r5.

(no pull requests)

Release 1.1.0rc5

Monday, 08 February, 2021 (tar, zip)

Hopefully the last prerelease before 1.1.0.

Updates to Arrow 3.0. PR #709.

getitem_field calls simplify_optiontype. PR #714.

  • PR #714: getitem_field should simplify_optiontype (for option-type arrays).

  • PR #709: ARROW-10930 has been fixed, and we depend on it in the new Parquet-handling code, so the minimum Arrow is now 3.0.

Release 1.1.0rc4

Saturday, 06 February, 2021 (tar, zip)

Minor changes, but one is a feature, not a bug-fix, so it needs to be pre-released before 1.1.0. I need to get 1.1.0 out soon, but I want the Parquet stuff to be in it.

Can now read and write Parquet datasets (conventions for sets of multiple files): PR #706, fixes #368 (old!).

Also, Python 2 can use ellipsis because we have pybind11 2.6 now: PR #707, fixes #705.

  • PR #707: Python 2 can use ellipsis now.

  • PR #706: Read and write Parquet datasets (sets of files).

Release 1.1.0rc3

Friday, 05 February, 2021 (tar, zip)

More minor bug fixes, mostly related to partitioned arrays and Parquet files: PRs #703 and #699.

  • PR #699: Fixing more bugs revealed by prepping for SciPy.

  • PR #703: Fixed #702, ‘ak.to_arrow’ with PartitionedArrays.

Release 1.1.0rc2

Tuesday, 02 February, 2021 (tar, zip)

Actually remove the features that have been deprecated, [scheduled to be removed in 1.1.0]( PR #698.

Fixed #689, the dimension of arrays returned by empty slices: PR #691.

@ianna fixed tuple-building in ArrayBuilder to guard against specifying a nonexistent slot and segfaulting: #697.

Various fixes in preparation for a SciPy 2021 tutorial:

  • PR #698: Remove ak.*_arrayset functions in preparation for 1.1.0.

  • PR #693: Fixes for SciPy 2021 prep. (also: #694)

  • PR #697: add a check in a tuple builder for an out of bounds index.

  • PR #691: Fixes #689, the dimension of arrays returned by empty slices.

Release 1.1.0rc1

Saturday, 30 January, 2021 (tar, zip)

Reducing over-materialization of virtual arrays: PRs #643, #644, #657, added Form-aware lazy Parquet: #688

Fixed ak.from_buffers to allow unreachable elements: PR #673

Developed the AwkwardForth VM: PRs #683, #648, #653, #661, #664, #672

Removed right-broadcasting from all operations except those that require it for NumPy compliance: #656, #680

@ianna improved sorting: PRs #639, #687, added complex numbers support: PRs #652

@trickarcher generalized CuPy interop to JAX: PRs #645, #662

@reikdas cleaned up developer scripts: PRs #665, #666, #667

@henryiii added more code quality tests: PRs #675, #681, #682, #677, #676, #685, #683

Cleaned up documentation: PRs #647, #650, #684

  • PR #688: Give lazy Parquet files information about their Forms.

  • PR #687: check content length before arg/sorting.

  • PR #683: refactor: pulling static info into setup.cfg.

  • PR #685: chore: flake8.

  • PR #676: chore: update pybind11 2.6.2.

  • PR #672: Put RNTuple measurements on the performance plot.

  • PR #677: docs: include GitHub button in GitHub dropdown.

  • PR #682: tests: fix B015.

  • PR #684: UnknownType documentation had a copy-paste error; fixed now.

  • PR #681: fix: flake8 F811.

  • PR #680: Remove right-broadcasting from most uses of ‘broadcast_and_apply’. It’s almost never what people want, and we’re only obliged to maintain it in functions that generalize NumPy (like ufuncs and ‘ak.where’).

  • PR #652: complex numbers support.

  • PR #675: style: pre-commit.

  • PR #669: Avoid specifying target CUDA architecture.

  • PR #673: Fixes #671 by allowing buffers in ak.from_buffers to be larger than strictly necessary (following the rules that define lengths of array nodes;

  • PR #670: fix warnings and run static analyser.

  • PR #667: Update documentation.

  • PR #666: Remove unused variable from dev/

  • PR #665: Fix generated file cleanup script.

  • PR #664: Actually remember to release the GIL before doing some multithreading tests.

  • PR #661: AwkwardForth additions to make Avro and Parquet parsing possible.

  • PR #662: Cleanups after PR #648.

  • PR #645: This PR adds the from_cuda_array_interface, to form CUDA arrays in a more general fashion.

  • PR #657: With the new lazy slices, it’s now possible to get into ‘VirtualArray::getitem_next_jagged’.

  • PR #653: Bugfixes in ForthMachine (discovered by writing documentation).

  • PR #656: scikit-hep/uproot4#244 revealed surprising semantics of with regular arrays. Regular array case has been changed to act the same as jagged arrays.

  • PR #648: Add a ForthMachine to the codebase, copying from ‘studies’.

  • PR #650: Fixes #649, wording in documentation.

  • PR #647: Fix JupyterBook formatting and add the executable notebooks to CI tests.

  • PR #646: Black and flake8.

  • PR #639: add quick sort and argsort without recursion.

  • PR #638: Prototype Forth virtual machine in C++ (close to what will be added to Awkward Array).

  • PR #644: Querying array depth should never materialize if anything has a Form.

  • PR #643: Prevent trivial carrying, which can also prevent materialization of some VirtualArrays.

Release 1.0.2

Wednesday, 06 January, 2021 (pip, tar, zip)

@nsmith- fixed virtual arrays in ak.to_arrow (PR #642).

Otherwise, this is identical to 1.0.2rc5.

  • PR #642: Materialize virtual arrays in to_arrow.

Release 1.0.2rc5

Tuesday, 05 January, 2021 (tar, zip)

Fixed #628, allowing np.int64(N) to be used in a slice like integer N (PR #636).

The intent is for this to be the last prerelease before 1.0.2. Test it!

  • PR #620: Prototype Forth VM for filling Awkward Arrays from Uproot.

  • PR #636: Accept NumPy integers in slices.

Release 1.0.2rc4

Monday, 04 January, 2021 (tar, zip)

Added the ability to select fields inside of nested records with syntax like array[[“pt”, “eta”, “phi”], “nominal”] (#619).

Fixed Apache Arrow → Awkward Array (ak.from_arrow) for sliced Arrow arrays: it has an offset attribute we had been ignoring (#625). Thanks to @trickarcher for the extensive tests!

Ensured that an ak.Array’s behavior always gets passed to output of any operation (#626), even if the input is a dict (#627, affected, ak.cartesian, and ak.argcartesian).

Fixed #629, ak.with_field dropping parameters (#631), and #634, ak.fill_none not accepting a Record as a fill value (#635).

Added a roadmap and upvote/thumbs up instructions to the README.

  • PR #635: Fixes #634.

  • PR #631: Fixes #629.

  • PR #627: A dict of arrays requires ‘behaviorof(*arrays.values())’.

  • PR #626: Homogenize and streamline pass-through of Array behavior.

  • PR #625: Fixes #624: unhandled ‘offsets’ in pyarrow arrays.

  • PR #619: Implemented column selection within multiple records.

  • PR #617: Created a roadmap.

Release 1.0.2rc3

Tuesday, 22 December, 2020 (tar, zip)

@jpivarski revised the ak.concatenate implementation (#610), fixed a bug related to axis handling (#612), and made ak.concatenate friendlier to lazy arrays (#613; “friendlier” = “materializes arrays in fewer cases”).

@chrisburr added setuptools as a requirement because it is used for pkg_resources.

@ianna added validity-checking for strings, bytestrings, and categorical (#571), including some revisions of sorting and a partial implementation of checking for uniqueness and identifying unique elements from arrays that can later be used to implement np.unique.

  • PR #571: validity checking based on known parameters.

  • PR #613: ak.concatenate should minimally touch lazy arrays. (also: #603)

  • PR #612: Added ‘axis_wrap_if_negative’ to PartitionedArray.

  • PR #611: Add setuptools to requirements for pkg_resources.

  • PR #610: Revise concatenate with axis != 0.

Release 1.0.2rc2

Thursday, 17 December, 2020 (tar, zip)

This release is only for getting a Zenodo DOI for this repo.

(no pull requests)

Release 1.0.2rc1

Thursday, 17 December, 2020 (tar, zip)

Updated Awkward <–> Arrow conversion to preserve nullability in type (PRs #602, #606). Preemptively avoiding warnings from NumPy 1.20 (#599) and fixed 32-bit Linux cases in the tests (#604).

@henryiii fixed hardcoded threads in MacOS compilation target (for deploying to conda-forge).

  • PR #606: More complicated example revealed bugs in Arrow conversion.

  • PR #605: fix: avoid hardcoded threads and macOS target.

  • PR #604: Make tests work in 32-bit.

  • PR #602: Use pyarrow.field to preserve nullability in Arrow conversion.

  • PR #599: Preemtively avoid warnings in NumPy 1.20 (untested).

Release 1.0.1

Monday, 14 December, 2020 (pip, tar, zip)

Fixed #597 with PR #598. Otherwise identical to 1.0.1rc3.

  • PR #598: Fixes ak.from_buffers failure for ListArray.

Release 1.0.1rc3

Monday, 14 December, 2020 (tar, zip)

DeprecationWarning -> FutureWarning, add test samples to sdist, and do one last release candidate (1.0.1rc3).

If the source tarball for this (on PyPI) can run all tests, then we’re good and I can release 1.0.1. Hopefully, that will happen today.

(no pull requests)

Release 1.0.1rc2

Friday, 11 December, 2020 (tar, zip)

@jrueb implemented the ak.unflatten function (#583).

@jpivarski fixed segfault int ak.to_numpy(ak.layout.NumpyArray(cupy.array([1, 2, 3])) (#591), changed the definition of RegularArray to accept size == 0 (#590), which was inspired by a corner-case revealed in testing ak.unflatten, and that, in turn, required the ak.to_arrayset/ak.from_arrayset serialization to be overhauled (#592). Because any interface changes should be formally deprecated now, these functions must be renamed: ak.to_buffers/ak.from_buffers; why this had to be changed (with RegularArray examples) is described here:

If no one finds any problems with this release candidate, it will be released as 1.0.1 on Monday. All other features will now target 1.0.2rc1. After 1.0.1 is out, the release candidates leading up to it will be deleted from PyPI.

  • PR #592: Replace to_arrayset/from_arrayset with to_buffers/from_buffers and deprecate the original.

  • PR #590: Change the definition of RegularArray to accept size == 0.

  • PR #583: Implement unflatten function.

  • PR #591: Now ‘ak.to_numpy(ak.layout.NumpyArray(cupy.array([1, 2, 3]))’ works.

Release 1.0.1rc1

Wednesday, 09 December, 2020 (tar, zip)

Actually removed the features that were supposed to be removed in 1.0.0 (#576).

Fixed the –record argument, needed for bdist_rpm (#577).

Implemented ak.Array.ndim in the Numba context (#578).

Updated the internal broadcast_and_apply and recursively_apply interfaces to support axis < 0 for some functions (#582). Used that to add an axis parameter to ak.is_none (#587). Also fixed a corner-case in ak.flatten’s axis handling (#586).

  • PR #587: Modernize ak.is_none and add an ‘axis’ parameter.

  • PR #586: Fix corner-case revealed by issue #585, but distinct from that issue.

  • PR #582: Propagate ‘posaxis’ through broadcast_and_apply and recursively_apply, then implement ‘axis < 0’ for some functions.

  • PR #578: Implement ak.Array.ndim in the Numba context.

  • PR #577: Fix the –record argument, which is needed for bdist_rpm.

  • PR #576: Actually remove deprecated features.

Release 1.0.0

Saturday, 05 December, 2020 (pip, tar, zip)

First version 1.0.0 (non release candidate)! From now on, when users

`bash pip install awkward `

(without any version qualification) they will get Awkward 1.x, not Awkward 0.x.

This release also has a few bug-fixes: a memory leak in ArrayBuilder and ak.combinations (#570) and converting Awkward 0 Table with non-trivial _view into Awkward 1 RecordArray, which would sometimes be wrapped in an IndexedArray for the _view (#573).

This version of Awkward Array is compiled against [pybind11 version 2.6.0]( and [RapidJSON version 1.1.0]( (though RapidJSON is not part of the public interface the way pybind11 is: only pybind11 might have to be version-matched, not RapidJSON).

  • PR #573: Fix ak.from_awkward0’s Table (missing _view).

  • PR #570: Fix ArrayBuilder memory leak.

Release 1.0.0rc2

Thursday, 03 December, 2020 (tar, zip)

@reikdas added a tool to check which GPU kernels have been implemented (#565).

@ianna implemented multi-JSON reading and nan/inf/-inf string substitution (#568).

@trickarcher added more loop-dependent GPU kernels (#454).

@jpivarski added the ‘initial’ argument to ak.min/ak/max (#566), created a pass-through “awkward1” package (#564), fixed up the documentation, and renamed the master branch as main (#569).

  • PR #569: Rename ‘master’ branch to ‘main’.

  • PR #568: Options for “NaN” strings as NaN floats.

  • PR #454: Add some more Loop Dependent Kernels.

  • PR #565: Tool to check if kernel is implemented in all places.

  • PR #566: Added the ‘initial’ argument to ak.min/ak.max.

Release 1.0.0rc1

Monday, 30 November, 2020 (tar, zip)

First actual 1.0 version!

Also, fixed booleans in Numba (#559), setting a virtual field with __setitem__ (#561), and renamed awkward1awkward everywhere (#563).

(no pull requests)

Release 0.4.5

Tuesday, 24 November, 2020 (pip, tar, zip)

Another batch of [November bug-fixes](

@nsmith- made mixin classes derived from a decorator pickleable (#542).

@ianna fixed a bug in sort/argsort (#524) and concatenate (#548).

@reikdas added a script to clean up generated files (#556).

@jpivarski generalized ak.where to take a non-NumPy condition (#544), implemented __contains__ in and out of Numba (#547), np.array(ak.Array) in Numba (#550), removed the right-broadcast from ak.with_field (#553), implemented ak.to_regular and ak.from_regular (#551), updated the GitHub issue templates, and fixed a bug affecting Coffea (, PR #558).

  • PR #553: ak.with_field should not right-broadcast (by default).

  • PR #551: Also implemented ak.to_regular and ak.from_regular.

  • PR #548: concatenate bug-fix. (also: #545)

  • PR #550: Implemented ‘np.array(ak.Array)’ in Numba.

  • PR #547: Implemented ‘__contains__’ in and out of Numba.

  • PR #524: argsort and sort for indexed option arrays bug fix.

  • PR #544: Simplified and generalized ak.where using broadcast_and_apply.

  • PR #542: Pickle-able mixin classes from decorator.

Release 0.4.4

Tuesday, 17 November, 2020 (pip, tar, zip)

Mostly bug-fixes, but a few new functions:

  • PR #495: @reikdas added a test to ensure kernel signatures match specification, are in order

  • PR #517: masked __getitem__ on empty arrays

  • PR #518: fixed ak.to_pandas with IndexedArrays and other nodes

  • PR #519: ak.local_index

  • PR #520: actually removed long-deprecated Pandas code

  • PR #525: fixed the definition of Form::getitem_field

  • PR #526: infinite recursion bug in Arrow translation

  • PR #527: definition of “mergeable” with parameters (different __doc__ is mergeable, different __record__ is not)

  • PR #535: ak.zeros_like, ak.ones_like, ak.full_like

  • PR #536: enforce minimum pyarrow version (2.0.0)

  • PR #537: fixed matrix multiplication (multiply many differently sized matrices with one @!)

  • PR #539: @ianna implemented ak.concatenate for axis > 0!

  • PR #540: performance issues in __setitem__

  • PR #539: concatenate for a nonzero axis operation.

  • PR #540: Fix issue #538’s performance issues.

  • PR #537: Fix matrix multiplication.

  • PR #536: Enforce minimum Arrow version 2.0.0 and fix issues due to ARROW-9556.

  • PR #535: Implemented zeros_like, ones_like, and full_like, and fixed from_numpy for NumPy string arrays.

  • PR #527: Fix UnionArray ufuncs and parameters in merging. (also: #459, #522, #459, #522)

  • PR #495: Add a developer tool to check if kernel specification file is sorted.

  • PR #526: Fix (infinite) recursion bug in Arrow translation.

  • PR #525: Fix #402: Form::getitem_field must return the Form of what Content::getitem_field would return.

  • PR #520: Actually remove expired deprecations (they were supposed to go in 0.4.0).

  • PR #519: Provide ak.local_index.

  • PR #518: to_pandas with IndexedArrays (and other types)

  • PR #517: Masked take on an empty array should behave in a way that is consistent with non-empty arrays.

Release 0.4.3

Thursday, 05 November, 2020 (pip, tar, zip)

Calling ufuncs on any custom types (not just records) will raise errors unless a customization is defined for exactly that ufunc and type. Some custom types, like “categorical,” need to handle arbitrary ufuncs, so I also added a “apply_ufunc” interface to define behaviors across the board. (#513)

Added copy and deepcopy, both with the Python interface (copy module) and with the NumPy interface (np.copy). (#514)

Fixed the cache-handling of version 0.4.2. (#515)

  • PR #515: Fix fall-through that happened with the deprecation message.

  • PR #514: Provides high-level access to copy and deepcopy operations.

  • PR #513: Blocked ufuncs on custom types, reopened them for categoricals using a new apply_ufunc interface, updated documentation.

Release 0.4.2

Wednesday, 04 November, 2020 (pip, tar, zip)

Mutable ak.Array.cache has been replaced with immutable ak.Array.caches, which always contains all the VirtualArray caches in the whole layout; it no longer needs to be maintained by users.

This is an interface-breaking change (with deprecation warnings), and a new release is needed to bring uproot4 up to date with the change.

  • PR #512: Always keep references to all caches in a ak.Array.

Release 0.4.1

Tuesday, 03 November, 2020 (pip, tar, zip)

Broadcasting ufuncs across records is now deprecated, and will be removed in version 1.0.0 (December 1, 2020).

Fixed two bugs (#501 and #499).

  • PR #510: Remove broadcasting over the fields of records.

  • PR #508: Fixes #499 by removing gaps from ListArray::content.

  • PR #507: Fixes #501 and generalizes from_numpy/to_layout to accept NumPy arrays of strings.

  • PR #505: Superflous line.

Release 0.4.0

Thursday, 29 October, 2020 (pip, tar, zip)

Supports Python 3.9. (Now MacOS only supports Pythons 2.7, 3.7-3.9 (3.6 dropped). All other operating systems support Pythons 2.7, 3.5-3.9)

Based on [pybind 2.6.0]( This is the first jump in pybind11 version in a while.

  • PR #482: Add Python 3.9 to tests and deployment.

  • PR #488: Add conda install instructions.

  • PR #409: Fill out the ‘creating arrays’ section.

  • PR #485: Update to pybind11 2.5.0. (also: #483)

  • PR #478: Fix broken CUDA tests.

  • PR #473: Properly broadcast over empty ListArray.

  • PR #477: CPU kernel source files will have 1 file per kernel.

  • PR #474: Fix broken links.

  • PR #471: We do not need blacklists for kernel/test generation anymore.

  • PR #468: Generate kernel header files from specification.

Release 0.3.1

Monday, 21 September, 2020 (pip, tar, zip)

Put the cmake requirement back into pyproject.toml and version-lock awkward1-cuda-kernels to awkward1.

The main reason for this release is because we hit the 10 GB limit and now I can’t deploy a complete set of wheels. (They won’t upload if a name had existed, even if manually deleted.) I’ve [requested a higher limit](

  • PR #470: Put the ‘cmake’ PyPI package back into pyproject.toml.

  • PR #469: awkward1 must use THE SAME VERSION of awkward1-cuda-kernels when it uses any.

Release 0.3.0

Monday, 21 September, 2020 (pip, tar, zip)

As discussed in #350, Awkward arrays can no longer be used as Pandas columns. Also part of this API change (#464),

  • array.tojson has been removed: use ak.to_json(array).

  • array.columns has been renamed: use array.fields.

  • ak.keys(array) has been renamed: use ak.fields(array). (ak.keys still exists with a “deprecated until 0.4.0” message)

  • array.ndim (property) is now the dimension of the array, rather than 1 (a Pandas requirement)

  • array.type has been added; it is equivalent to ak.type(array). If you had fields named “type”, they will now have to be accessed as array[“type”], rather than array.type.

Thanks to @reikdas, this is the first release with a [formal specification]( for the cpu-kernels/cuda-kernels library! (The bottom layer of the 3-layer architecture, [documented here](

Furthermore, ufunc behavioral matching has been generalized (#463) to allow:

` ak.behavior[np.multiply, numbers.Number, "Vector"] = scalar_multiply ak.behavior[np.multiply, "Vector", numbers.Number] = scalar_multiply `

Two mistakes were fixed in the Windows builds (#465 by @chrisburr and #467), allowing them to be used without debug-version system libraries (#430). The first of these enabled @lgray to [deploy it on conda-forge](!

Still built on pybind 2.4.3, though we might want to update that, especially if pybind supports the NumPy datetime dtypes.

  • PR #467: Try to solve Windows installation issue by always compiling in ‘Release’ mode.

  • PR #455: Check kernel specification into git.

  • PR #464: Deprecate ‘keys’ -> ‘fields’ and add properties to ak.Array and ak.Record.

  • PR #465: Attempt to make check for -A x64 flag more robust.

  • PR #463: Generalize NumPy ufunc behavioral matching.

  • PR #461: Apply conda-forge/awkward1-feedstock#2 here to test it in our CI.

  • PR #462: Remove ak.Array.tojson for 0.3.0 (use ak.to_json).

  • PR #460: Remove Awkward-as-a-Pandas-column feature, as discussed in #350.

Release 0.2.38

Friday, 18 September, 2020 (pip, tar, zip)

Getting closer to finalizing @reikdas and @trickarcher’s work this summer, and @nsmith- fixed a missing case in ak.type (booleans!).

Also, the Windows build procedure was generalized to allow awkward1 to become a package on conda-forge.

  • PR #458: Change the Windows build following @chrisburr’s suggestion.

  • PR #456: Add numpy boolean type to ak describe.

  • PR #453: Add more kernel test cases.

  • PR #452: Add description field to specification.

  • PR #436: Working on the Loop Dependent Kernels.

  • PR #451: Change kernel specification format.

  • PR #450: Explicitly cast list to CuPy array in cumsum test.

Release 0.2.37

Saturday, 12 September, 2020 (pip, tar, zip)

@ianna fixed the intermittent MacOS error (issue #320)! Although this bug only manifested itself on MacOS in our tests, due to the capriciousness of memory overwriting/reading, it was really a bug on all platforms.

@reikdas auto-generated more CUDA kernels and will now be turning to consolidating what we have (i.e. cleanup). 59 of the 77 embarrassingly parallel kernels can be converted without manual intervention.

@jpivarski fixed a bug in ak.flatten and ensured that variable dimensions remain variable and regular dimension remain regular in reducers, unless there are missing values involved. I also added two performance improvements: broadcasting only compacts lists if they have to, resulting in a 40× speedup in the limit of large arrays (PR #444) and when Uproot has types that would be slow to deserialize from ROOT, it can now offload the processing to a C++ loop in Awkward, resulting in an 80× speedup in the targeted case (PR #448). This required ak.concatenate to merge in batches, rather than two at a time (TBaskets in a ROOT file present hundreds of arrays to concatenate; an _O(n²)_ algorithm is bad), which is PR #449 (merged into PR #448 before the latter was squash-and-merged).

  • PR #448: Set up interface between Uproot and Awkward so that Awkward can be used to optimize object-reading. (also: #449)

  • PR #449: Upgrade Content::merge from a single ‘other’ argument to a std::vector of ‘others’.

  • PR #433: Auto generate more CUDA kernels.

  • PR #447: Fix reducer dimension regularity. (also: #434)

  • PR #446: Fix ak.flatten for arrays that have been sliced.

  • PR #435: intermittent error bugfix.

  • PR #444: Always assuming ListArrays/ListOffsetArrays have incompatible structure is too conservative. Check for consistency and shortcut if possible.

  • PR #441: Fix typo in documentation.

  • PR #440: Fix cuda shared object retrieval.

  • PR #438: Restructure test generation - store only roles in specification.

Release 0.2.36

Tuesday, 08 September, 2020 (pip, tar, zip)

@reikdas has added a second batch of CUDA translations.

<img src=”” width=”600”>

@nsmith- fixed reference-cycle issues in VirtualArrays by making ArrayCache keep only a weak reference to the cache (that it might be included in).

@jpivarski fixed some odds and ends and also revamped the deployment procedure so that pip install awkward1 doesn’t install anything outside of its Python directory. (Homebrew complains about that on MacOS.) There is now a python -m awkward1.config –cflags –libs command to get a path to the installed header files and libraries, and dependent-project is now being tested regularly on Linux and MacOS.

  • PR #439: Libraries and includes should only go into the Python directory, not multiple places.

  • PR #429: Generate more CUDA kernels.

  • PR #431: Allow ArrayCache(None) construction.

  • PR #428: Fix a bug in repr due to weak cache refs.

  • PR #427: Implement weak reference to virtual array caches.

  • PR #426: Generate tests for CUDA kernels.

  • PR #425: Fixes #186; proper string-escape sequences in util::quote.

  • PR #373: Generate CUDA kernels from kernel specification.

  • PR #424: Change const representation in kernel spec.

  • PR #422: Forward purelist_parameter “__doc__” in lazy slices.

  • PR #423: docs: add sjperkins as a contributor.

  • PR #420: NumpyArray::bytelength and NumpyArray::carry were wrong for non-contiguous; fixed. (also: #418)

Release 0.2.35

Wednesday, 26 August, 2020 (pip, tar, zip)

Quick fix for inability to print out partitioned arrays.

(no pull requests)

Release 0.2.34

Tuesday, 25 August, 2020 (pip, tar, zip)

@trickarcher added conversions to and from CuPy arrays, enabling all of CuPy’s ufuncs for non-structure-changing math (i.e. formulas). (#372)

@reikdas improved the kernel testing (#412, #413, #414).

@jpivarski fixed references to np.object (where np is NumpyMetadata, not numpy), which was breaking Uproot4 tests and motivated this new release.

@jpivarski also fixed #415, issues with ArrayBuilder.append and union types.

  • PR #417: Fix nesting structure of arrays passed to ArrayBuilder.append.

  • PR #416: Fix references to np.object (where ‘np’ is a NumpyMetadata singleton).

  • PR #372: Add to and from_cupy for Numpy Array and Identities.

  • PR #414: Restructure test locations.

  • PR #413: Better error message if unable to find cpu-kernel shared object.

  • PR #412: Add const info to kernel spec.

Release 0.2.33

Saturday, 22 August, 2020 (pip, tar, zip)

@veprbl fixed the warnings in Linux (gcc) and MacOS (clang): everything is clean!

@jpivarski added a categorical type with functions like ak.to_categorical. This type is high-level only, like the string type, and is used to determine which fields to convert to Arrow/Parquet’s dictionary encoding and which not to. See issue #400.

Fixed #408, a severe error in ak.argmin and ak.argmax: they returned wrong integer positions for arrays with missing values or variable-length lists with axis != -1.

  • PR #410: Fix argmin/max positions for missing values.

  • PR #407: Fix warnings reported by MacOS/Cling and try PIP_ONLY_BINARY instead of restricting cmake version.

  • PR #406: Handle cases where C for loop was translated to Python while loop.

  • PR #403: Introduce a ‘categorical’ type (behavioral, just as ‘string’ is) that is the only thing that passes to Arrow as DictionaryArray.

  • PR #316: libawkward export tuning.

Release 0.2.32

Wednesday, 19 August, 2020 (pip, tar, zip)

@nsmith- filled in missing data in VirtualArrays so they can be used in Numba in more situations.

@reikdas cleaned up the kernel tests.

@jpivarski fixed some bugs in the Numba implementation, enabled functions like enumerate and zip, added GitHub URLs to all exceptions for faster investigation of bugs, and abstracted the use of NumPy so that the Python-side calculations can be swapped for CuPy.

  • PR #401: Missed some validity error URL reporting in #399, finished them here (because they were discovered as part of the Arrow bug-hunt).

  • PR #390: VirtualArray has correct __record__ parameter.

  • PR #399: All exceptions should report their version, file, and line number as GitHub links.

  • PR #397: Awkward data should be registered as Numba constants so that they can be passed as closures to Numba-compiled functions. (also: #175)

  • PR #398: Truncate generated outparams only to required length.

  • PR #396: Fixes #395: IndexedArray was updating both the ArrayView viewport and ‘nextat’; only one is allowed.

  • PR #388: Abstract all uses of NumPy, so that GPU arrays will use CuPy instead.

  • PR #394: Fixed #393 (BitMaskedArray::bytemask output should be equivalent to valid_when=False).

Release 0.2.31

Saturday, 15 August, 2020 (pip, tar, zip)

Updated the awkward1-cuda-kernels build and testing process. This is the first regular release of awkward1-cuda-kernels as a PyPI package, and henceforth all awkward1 PyPI releases will be accompanied by a awkward1-cuda-kernels PyPI release with the same version number.

  • PR #389: Fix that cuda-kernels build!

Release 0.2.30

Tuesday, 11 August, 2020 (pip, tar, zip)

Renamed and fixed ak.values_astype, added Pandas-style ak.Array constructor, and other touch-ups as part of writing documentation.

@nsmith made ak.from_arrayset “even more lazy” by inserting a VirtualArray in every field of a RecordArray when lazy=True.

  • PR #381: Writing more documentation. (also: #387)

  • PR #384: Make from_arrayset even more lazy.

  • PR #385: Fixed #383, prevented conversion of characters in strings, and renamed ak.numbers_to_type -> ak.values_astype.

  • PR #382: Fixed broken kernel page in sphinx docs.

Release 0.2.29

Monday, 10 August, 2020 (pip, tar, zip)

The website can’t be updated unless the bug-fixes that the tutorials require are available as a released version. Thus, this is just a bug-fix release (there may be more, as more documentation gets written).

  • PR #379: Fill in a lot of stubs on

  • PR #378: Update the what-is-awkward to align with (and include) the video.

Release 0.2.28

Friday, 07 August, 2020 (pip, tar, zip)

As per #350, Pandas integration will be deprecated. Starting in version 0.3.0, it won’t be possible to use Awkward arrays as Pandas Series or DataFrame columns. We’re also giving up on attempts to keep Matplotlib from iterating over non-numeric data. (These are part of a theme of removing sneaky tricks from the code, such as awkward1._util.called_by_module, for robustness.)

Updated to backward-incompatible changes in Arrow 1.0.0. Now Arrow 1.0.0 is the minimum version that works with Awkward.

Updated to changes in JupyterBooks to fix documentation.

@ianna added a numbers_to_type function, which converts all numbers to a given type while maintaining an array’s structure.

@reikdas generated over three thousand unit tests for the kernels, which previously had only been tested as part of integration tests. Once the blacklist in the test generation framework is reduced to zero, line coverage of kernels will be 100%. Once the samples are carefully chosen in kernel-specification/samples.json, all the important cases will be tested as well. This testing framework will be extended to CUDA kernels as well.

@nsmith- added class and class method decorators to simplify the process of adding high-level behaviors.

Internally, all of the “offset” parameters have been removed from kernel argument lists. Instead, correctly offset pointers are passed to these functions, so they can assume that they start from (relative) array index zero. Several previously fixed bugs have been traced to this and in the conversion, I found a few more suspicious spots—now we don’t have to worry about it anymore.

Still built on pybind 2.4.3, though we might want to update that, especially if pybind supports the NumPy datetime dtypes.

  • PR #377: Rename ‘astype’ to ‘numbers_to_type’, for use as a high-level function. Also removed ‘can_cast’, since it’s exactly the same as the NumPy version(users should use NumPy).

  • PR #374: Pandas deprecation version is 0.3.0 and ak.to_pandas is documented.

  • PR #371: Removing the last offset parameters (missed them before because they’re in an array).

  • PR #346: Operation to change the number type.

  • PR #366: Remove ‘offset’ arguments from all kernels, only passing in pointers that have already been offset.

  • PR #369: Improve C++ to C generator.

  • PR #365: Do not iterate over lists while comparing in pytest.

  • PR #307: Create specification and generate tests for kernels based on hand written labels.

  • PR #364: Add Pandas deprecation warnings and other clean-ups.

  • PR #363: jupyter-books 0.7.3 no longer supports ‘headers’. (also: #350)

  • PR #357: Cleanup the Docker Residues like .test files and .dockerignore.

  • PR #360: Ensure that Matplotlib raises ValueError on non-flat arrays and keep test_0341 from leaking Parquet files.

  • PR #358: Fixed typo.

  • PR #354: Mixin class decorators.

  • PR #356: Adapt to pyarrow/Arrow 1.0.

  • PR #353: Add docstring also to Record.

Release 0.2.27

Thursday, 23 July, 2020 (pip, tar, zip)

Make Awkward-in-Pandas an opt-in feature with likely deprecation, as described in #350. (That’s where users can explain their use-cases if they want to keep it.)

Change metadata with a “cache” into just cache, since “metadata” is a legitimate word for scientific data and we don’t want a conflict. (It broke Coffea’s daily tests.)

This version includes @trickarcher’s first full example of moving an array to the GPU and computing something on it (ak.num). The necessary code does not exist in PyPI yet, though.

  • PR #352: Replace metadata containing cache with just cache (no premature generalization).

  • PR #351: Put the Awkward-in-Pandas feature up for a vote, citing #350.

  • PR #349: Fix Python SyntaxWarning.

  • PR #345: Prepare the Python Layer for the CUDA Kernels, and add Docker Images for CI.

Release 0.2.26

Thursday, 23 July, 2020 (pip, tar, zip)

From @nsmith-, docstrings are now passed through array manipulations as a __doc__ parameter (which becomes a __doc__ attribute on ak.Array).

@ianna implemented negative axis parameters, which includes cases like:

array = ak.Array([
        {"x": [1], "y": [[], [1]]},
        {"x": [1, 2], "y": [[], [1], [1, 2]]},
        {"x": [1, 2, 3], "y": [[], [1], [1, 2], [1, 2, 3]]}])

ak.num(array, axis=-1).tolist() == [{'x': 1, 'y': [0, 1]},
                                    {'x': 2, 'y': [0, 1, 2]},
                                    {'x': 3, 'y': [0, 1, 2, 3]}]

which would be inexpressible with a nonnegative axis.

Sorting finally has a high-level function, ak.sort (and ak.argsort).

Awkward ↔ Apache Arrow conversion now prefers 32-bit Arrow types, if possible, and Awkward arrays can be written to and read from Parquet files.

Awkward Arrays can now be deconstructed into a Mapping of str → NumPy arrays (or binary blobs) and back again using ak.to_arrayset and ak.from_arrayset. This permits general serialization, though standard formats like Arrow and Parquet are to be preferred for any long-term storage.

  • PR #348: Added form_key (optional string) to all Forms.

  • PR #347: Remove redundant line from reducers kernel.

  • PR #314: Implement axis_wrap_if_negative.

  • PR #344: The ak.Array/ak.Record/ak.ArrayBuilder repr quotes keys that are not good identifiers.

  • PR #343: Convert Arrow <–> Parquet, and hence Awkward <–> Parquet.

  • PR #340: Convert 64-bit unsigned 32-bit Awkward arrays into 32-bit Arrow arrays if their indexes are small enough.

  • PR #339: Adds a high-level interface to sorting (ak.sort) (also: #304)

  • PR #338: Renamed keeplayout → keep_layout in ak.{from,to}_awkward0.

  • PR #337: Try to fully resolve the NumPy format string issues. (also: #333)

  • PR #330: Attach docstrings to newly created highlevel arrays.

Release 0.2.25

Saturday, 11 July, 2020 (pip, tar, zip)

Added sort/argsort; kernels are being refactored and documented to prepare for GPU support; performance tuning: RecordArray carry → IndexedArray; __getitem__ for masked, jagged slices is now correct.

  • PR #327: Lookahead assignment Python code generation.

  • PR #326: Fix a lot of warnings that have recently been introduced.

  • PR #322: Revised getitem operation for masked jagged indexers.

  • PR #325: These tests pass if you’ve pip installed awkward1, but sometimes you need to work from the localbuild directory.

  • PR #293: Separation of cuda-kernels and memory_trackers implementation.

  • PR #324: Fix an error in partitionedarray: array[‘field’, 10].

  • PR #323: Fixed Python generation.

  • PR #319: Update doctest dummy yaml to test documentation.

  • PR #317: Remove redundant cpu kernels from operations.h.

  • PR #261: replace carry with indexedarray.

  • PR #306: Document interfaces of functions in sorting.cpp.

  • PR #299: This PR moves all the template kernels from utils to kernels.

  • PR #168: sort and argsort operations applied in axis.

  • PR #295: Update

  • PR #298: Touch up the kernels documentation.

Release 0.2.24

Friday, 12 June, 2020 (pip, tar, zip)

This is the first version of Awkward Array to strictly require Numba 0.50 if Numba is used at all. By incorporating numba/numba#5717 in version 0.50, importing Awkward Array does not cause Numba to be imported, yet even the first function JIT’ed by Numba can accept an Awkward Array as an argument because the Numba entry-point registers all Awkward types.

Built on pybind 2.4.3.

  • PR #270: Update the minimum Numba version to 0.50 when that becomes available. (also: numba/numba#5717)

  • PR #296: Do not allow dynamic sized arrays in cpu-kernels.

  • PR #269: Generate Python code for CPU kernels.

  • PR #294: Fix some typos in cpu-kernels.

  • PR #292: Fix some typos in cpu-kernels.

Release 0.2.23

Saturday, 06 June, 2020 (pip, tar, zip)

Built on pybind 2.4.3.

  • PR #290: Bug-fixes for HATS.

  • PR #288: fixes #286 broadcast single value with field.

  • PR #287: docs: add nikoladze as a contributor.

  • PR #283: Replace std::vector with C style code.

  • PR #282: Remove redundant includes from cpu-kernels.

Release 0.2.22

Friday, 29 May, 2020 (pip, tar, zip)

Built on pybind 2.4.3.

  • PR #281: Revert to static linking because it broke the wheel-deployment.

Release 0.2.21

Thursday, 28 May, 2020 (pip, tar, zip)

Built on pybind 2.4.3.

  • PR #280: Fix ak.pandas.dfs function for simple rows.

  • PR #279: Fix ArrayBuilder’s access to type in __repr__.

  • PR #266: Running black and flake8 on the Python codebase.

  • PR #265: Fixes #264, reductions at axis=N inside empty lists at axis=N-1.

Release 0.2.20

Thursday, 14 May, 2020 (pip, tar, zip)

Dropped support for Python 3.4, added badges to README, and all the collaborators (a long list of PRs).

Also added @trickarcher’s ak.to_arrow and ak.from_arrow functions: PRs #224 and #263. These functions are known to work for Arrow 0.17+.

Built on pybind 2.4.3.

  • PR #263: Continue from #224: fromarrow and toarrow.

  • PR #260: docs: add gordonwatts as a contributor.

  • PR #258: docs: add jpata as a contributor.

  • PR #259: docs: add martindurant as a contributor.

  • PR #257: docs: add douglasdavis as a contributor.

  • PR #256: docs: add bfis as a contributor.

  • PR #255: docs: add benkrikler as a contributor.

  • PR #254: docs: add Jayd-1234 as a contributor.

  • PR #253: docs: add guitargeek as a contributor.

  • PR #252: docs: add mhedges as a contributor.

  • PR #251: docs: add masonproffitt as a contributor.

  • PR #250: docs: add EscottC as a contributor.

  • PR #249: docs: add glass-ships as a contributor.

  • PR #248: docs: add veprbl as a contributor.

  • PR #247: docs: add Ellipse0934 as a contributor.

  • PR #246: docs: add trickarcher as a contributor.

  • PR #245: docs: add reikdas as a contributor.

  • PR #244: docs: add henryiii as a contributor.

  • PR #242: docs: add lgray as a contributor.

  • PR #241: docs: add ianna as a contributor.

  • PR #240: docs: add nsmith as a contributor.

  • PR #239: docs: add jpivarski as a contributor.

Release 0.2.19

Friday, 08 May, 2020 (pip, tar, zip)

PRs #232 and #234 are bug-fixes, #229, #236, and #237 are documentation. Documentation is now fully stubbed out, though it could take a long time to fill it all in. I’ve put in notifications telling users that it will be written on demand: they can bump up certain articles in priority.

Awkward continues to be built on pybind 2.4.3.

  • PR #237: Keep writing those tutorials.

  • PR #236: Writing tutorials 2.

  • PR #229: Update to JupyterBook’s new Sphinx-based build system.

  • PR #234: Working on #230 segfault. (also: #233)

  • PR #232: Fix bug in IndexForm possible types. (also: #231)

Release 0.2.18

Thursday, 30 April, 2020 (tar, zip)

PRs #227 and #228 built on pybind 2.4.3.

  • PR #228: Prepare the second Coffea demo.

  • PR #227: Write (also: #219)

Release 0.2.17

Wednesday, 29 April, 2020 (tar, zip)

PRs #216, #217, #220, and fixed #222, built on pybind 2.4.3.

  • PR #216: VirtualArray, which loads its data on demand and interacts with a cache.

  • PR #217: libawkward: pin vtables to the library.

  • PR #223: Fixed #222. It failed to initialize starts and stops at the end of its output array, leaving uninitialized junk.

  • PR #220: Fixed, args now correctly parse.

Release 0.2.16

Monday, 20 April, 2020 (tar, zip)

PRs #218, built on pybind 2.4.3.

  • PR #218: Fix a segfault I suspected but couldn’t reproduce. (also: #212)

Release 0.2.15

Sunday, 19 April, 2020 (tar, zip)

PRs #212, built on pybind 2.4.3.

  • PR #212: PartitionedArray, which only applies to the root of a structure.

Release 0.2.14

Friday, 17 April, 2020 (tar, zip)

PRs #189, built on pybind 2.4.3.

It is compatible with Numba 0.49 and _requires_ Numba 0.49 if Numba is to be used at all.

  • PR #189: Update to Numba 0.49 and make that the minimal version.

Release 0.2.13

Monday, 13 April, 2020 (tar, zip)

PRs #209, built on pybind 2.4.3.

This is the last version compatible with Numba 0.48 (and it _requires_ Numba < 0.49).

  • PR #209: Try again on visibility and also ensure -frtti. (also: #211)

Release 0.2.12

Saturday, 11 April, 2020 (tar, zip)

PRs #208, built on pybind 2.4.3.

  • PR #208: Fixes #207 (missing files in tarball)

Release 0.2.11

Friday, 10 April, 2020 (tar, zip)

PRs #206, built on pybind 2.4.3.

Release 0.2.10

Tuesday, 07 April, 2020 (pip, tar, zip)

PRs #188, #190, #194, #195, #196, #197, #198, #201; built on pybind 2.4.3.

  • PR #198: Wrote draft of tutorial for EIC.

  • PR #201: Rename ak.choose and ak.cross.

  • PR #197: All reference documentation is done.

  • PR #196: Keep writing those Python docs.

  • PR #195: Keep writing those Python docs.

  • PR #194: Changed some names to add underscores.

  • PR #190: Keep writing those Python docs.

  • PR #188: Really write those Python docstrings this time.

Release 0.2.9

Thursday, 26 March, 2020 (tar, zip)

PRs #187, built on pybind 2.4.3.

This introduces a new front page for documentation.

  • PR #187: Set up for Python documentation (including front page)

Release 0.2.7

Wednesday, 25 March, 2020 (tar, zip)

PRs #155, #164, #165, #171, #185, and established two documentation servers (only C++ doxygen is done): and Also, built on pybind 2.4.3.

  • PR #185: Start writing doxygen comments in C++.

  • PR #183: Enforce a 79 character maximum on all lines, 72 on docstrings/comments.

  • PR #180: Configure documentation (not content, just how the workflow will work).

  • PR #171: Issues #166, #167, #170 in one PR.

  • PR #155: fillna operation.

  • PR #164: Fixes #162. Replaces all Raw Pointer Access with wrappers.

  • PR #165: Implement argmin and argmax.

Release 0.2.6

Monday, 16 March, 2020 (tar, zip)

PRs #143 and #160, built on pybind 2.4.3.

  • PR #143: ByteMaskedArray, BitMaskedArray, and tomask operation.

  • PR #160: argchoose and choose.

Release 0.2.5

Wednesday, 11 March, 2020 (tar, zip)

PRs #157, #159, and fixed #77, built on pybind 2.4.3.

  • PR #159: Implement ‘argcross’ and ‘cross’.

  • PR #157: ak.Array and ak.Record constructors. Maybe the function.

Release 0.2.4

Tuesday, 10 March, 2020 (tar, zip)

PR #154, built on pybind 2.4.3.

  • PR #154: Add the ak.pandas.multiindex(array) function.

Release 0.2.3

Tuesday, 10 March, 2020 (tar, zip)

PR #152, built on pybind 2.4.3.

  • PR #152: Finish the count/sizes/num operation and the flatten operation.

Release 0.2.2

Monday, 09 March, 2020 (tar, zip)

PRs #148, #151, and #132 built on pybind 2.4.3.

  • PR #132: Merge all the rpad work (#114) into new environment.

  • PR #151: Issues #149 and #150: AttributeErrors and merging ak.behavior.

  • PR #148: isvalid as an operation.

Release 0.2.1

Friday, 06 March, 2020 (tar, zip)

PR #147, built on pybind 2.4.3.

Release 0.2.0

Friday, 06 March, 2020 (pip, tar, zip)

PR #140, built on pybind 2.4.3.

By incrementing the minor version number, we break the rough connection we had between PR numbers and patch version numbers. This represents the fact that we’re entering a phase in which the work is driven by issues (which are not sequential), rather than non-issue PRs (which can be sequential enough).

  • PR #140: Make __typestr__ a behavior, not a data property.

Release 0.1.141

Thursday, 05 March, 2020 (tar, zip)

PR #142, built on pybind 2.4.3.

  • PR #142: Fix Windows wheel and add auditwheel.

Release 0.1.139

Thursday, 05 March, 2020 (tar, zip)

PR #144, built on pybind 2.4.3.

(The version numbers no longer correspond to the PR numbers. Issue numbers are becoming more important than PR numbers.)

  • PR #144: Strings in Numba.

Release 0.1.138

Wednesday, 04 March, 2020 (tar, zip)

Commits to master, trying to fix the live deployment:…b610e875d2028ee6536f51ec9679b0360882a825

As always, built on pybind 2.4.3.

(no pull requests)

Release 0.1.137

Wednesday, 04 March, 2020 (tar, zip)

PRs #135, #137, #139, built on pybind 2.4.3.

If successful, this will be the first deployment with the new build procedure.

  • PR #137: Fix deployment.

  • PR #139: EmptyArrays have float64 type (like NumPy), but are integer arrays when used as a slice (fixing scikit-hep/awkward-array#236).

  • PR #135: Convert between Awkward0 and Awkward1.

Release 0.1.133

Tuesday, 03 March, 2020 (tar, zip)

PR #133, built on pybind 2.4.3.

  • PR #133: Fix the tests that are currently skipped due to setidentity segfaults.

Release 0.1.131

Monday, 02 March, 2020 (tar, zip)

PR #131, built on pybind 2.4.3.

  • PR #131: Reintroduce Numba “cpointers” test.

Release 0.1.129

Monday, 02 March, 2020 (tar, zip)

PR #129, built on pybind 2.4.3.

  • PR #129: Improved build procedure building from

  • PR #130: Rename ‘FillableArray’ to ‘ArrayBuilder’ and all ‘fillable’ to ‘builder’. (also: #129)

Release 0.1.128

Saturday, 29 February, 2020 (pip, tar, zip)

PR #128, built on pybind 2.4.3.

  • PR #128: Any tweaks that are necessary for Henry’s demo.

Release 0.1.122

Tuesday, 25 February, 2020 (tar, zip)

PR #118, built on pybind 2.4.3.

  • PR #118: Replace Numba StructModels with CPointers and check all reference counts.

Release 0.1.121

Wednesday, 19 February, 2020 (tar, zip)

PR #121, built on pybind 2.4.3.

  • PR #121: Better distribution: drop case-sensitive name and ensure that RapidJSON is in the source distribution.

Release 0.1.120

Tuesday, 18 February, 2020 (tar, zip)

PR #120, built on pybind 2.4.3.

  • PR #120: Support the Autograd library in much the same way as NumExpr.

Release 0.1.119

Tuesday, 18 February, 2020 (tar, zip)

PR #119, built on pybind 2.4.3.

  • PR #119: Support NumExpr and add a ‘broadcast_arrays’ function.

Release 0.1.117

Sunday, 16 February, 2020 (tar, zip)

PR #115, built on pybind 2.4.3.

  • PR #115: Add reducer operations (with an ‘axis’ parameter).

Release 0.1.116

Tuesday, 11 February, 2020 (tar, zip)

PR #116, built on pybind 2.4.3.

  • PR #116: Refactor pyawkward.cpp both for compilation speed and so that arrays can be dynamically loaded by dependent Python modules.

Release 0.1.111

Sunday, 09 February, 2020 (tar, zip)

PR #111.

  • PR #111: Allow Awkward Arrays to be used as slices, including list-type and option-type.

Release 0.1.110

Thursday, 06 February, 2020 (tar, zip)

PR #110, which fixes issues #91, #101, #108, #109.

Release 0.1.107

Tuesday, 04 February, 2020 (tar, zip)

PR #96 and PR #107.

  • PR #107: Assign fields to records (deeply, through all structure).

  • PR #96: Implemented *::count for axis != 0.

Release 0.1.106

Monday, 03 February, 2020 (tar, zip)

PR #106.

  • PR #106: Record should hold a pointer to RecordArray, not an instance.

Release 0.1.94

Monday, 03 February, 2020 (tar, zip)

PR #83, PR #93, and PR #94.

  • PR #93: UnionArray::simplify and IndexedOptionArray::simplify, to be used by functions that would naively return uniontypes and optiontypes. (also: #62)

  • PR #105: Turn study/ into array documentation.

  • PR #98: Bugfix for NumpyArray 32-bit vs 64-bit errors.

  • PR #97: Guard against inspecting __main__ module.

  • PR #83: *::flatten for axis != 0.

  • PR #94: ak.Array.__getattr__ for record fields. (also: #62)

Release 0.1.92

Tuesday, 28 January, 2020 (pip, tar, zip)

PR #92.

  • PR #92: Make ak.Array a Pandas DType extension.

Release 0.1.89

Friday, 24 January, 2020 (tar, zip)

PR #89.

  • PR #89: Address issues #88 and #61 with more complete tests.

Release 0.1.87

Wednesday, 22 January, 2020 (tar, zip)

PR #87, the Numba demo.

  • PR #87: Wrote a demo for Numba.

Release 0.1.86

Tuesday, 21 January, 2020 (tar, zip)

PR #86 and #30.

  • PR #86: For issue #60, NEP 13: allow NumPy ufuncs to be called on ak.Array. (also: #66)

  • PR #30: Starting cpp version of PR026 test.

Release 0.1.84

Friday, 17 January, 2020 (tar, zip)

PR #84.

  • PR #84: UnionArray: only the basics so that any JSON can be ingested.

Release 0.1.82

Thursday, 16 January, 2020 (tar, zip)

PR #82.

Release 0.1.81

Wednesday, 15 January, 2020 (tar, zip)

PRs #45 and #81.

(The big jump in version number is because I’m keeping the last digit in sync with the PR number, and I recently added a lot of issues that pushes up the PR number.)

  • PR #81: Issue #50: IndexedArray::flatten for axis=0. (also: #51)

  • PR #45: Start flatten implementation and add tests.

Release 0.1.49

Friday, 10 January, 2020 (tar, zip)

PR #49.

  • PR #49: Use ak.Array vs ak.Record to distinguish RecordArray from Record.

Release 0.1.47

Thursday, 09 January, 2020 (tar, zip)

Fixes issue #47 with PR #48.

  • PR #48: Reproduce and fix issue #47.

Release 0.1.46

Wednesday, 08 January, 2020 (tar, zip)

PR #46.

  • PR #46: Start IndexedArray (with and without OptionType).

Release 0.1.43

Monday, 06 January, 2020 (tar, zip)

PRs #42 and #43.

  • PR #44: Reproduce and fix issue #43.

  • PR #42: Create stubs for the flatten operation.

Release 0.1.40

Saturday, 04 January, 2020 (tar, zip)

PRs #40 and #41.

  • PR #40: Rename Identity/id -> Identities/identities and location -> identity.

  • PR #41: Bring FillableArray::index to regular python interface.

Release 0.1.39

Saturday, 04 January, 2020 (tar, zip)

PR #39.

  • PR #39: Replacing hanging types with Parameters on each Content.

Release 0.1.38

Saturday, 28 December, 2019 (pip, tar, zip)

PR #38.

  • PR #38: Static methods to make empty arrays of a given type.

Release 0.1.37

Thursday, 26 December, 2019 (tar, zip)

PR #37.

  • PR #37: Replace ‘lookup’ and ‘reverselookup’ with a single property (that acts like ‘reverselookup’).

Release 0.1.36

Friday, 20 December, 2019 (tar, zip)

PR #36, the [2019-12-20 Coffea demo](

  • PR #36: Continue working on the Coffea demo.

Release 0.1.33

Thursday, 19 December, 2019 (tar, zip)

PR #33.

  • PR #33: Creating a demo for Coffea will motivate improvements.

Release 0.1.32

Friday, 13 December, 2019 (tar, zip)

PR #32.

  • PR #32: Replace DressedType with parameters on all the Types.

Release 0.1.31

Wednesday, 11 December, 2019 (tar, zip)

PR #31.

  • PR #31: Now the types need to pass through Numba.

Release 0.1.28

Friday, 06 December, 2019 (tar, zip)

PR #28.

  • PR #28: Start the high-level layer: awkward.Array.

Release 0.1.26

Tuesday, 03 December, 2019 (tar, zip)

PR #26.

  • PR #26: Add RecordArray (and Record) to Numba.

Release 0.1.25

Wednesday, 27 November, 2019 (pip, tar, zip)

PR #25.

  • PR #25: Start writing RecordArray (C++ and Fillable, but not Numba).

Release 0.1.24

Wednesday, 20 November, 2019 (tar, zip)

PR #24.

  • PR #24: Start using RegularArray everywhere it needs to be used.

Release 0.1.23

Wednesday, 20 November, 2019 (tar, zip)

PR #23.

  • PR #23: Introduce RegularArray for rectilinear blocks of any type of awkward array.

Release 0.1.22

Wednesday, 13 November, 2019 (tar, zip)

PR #22.

  • PR #22: FillableArrays must be usable in Numba.

Release 0.1.21

Tuesday, 12 November, 2019 (tar, zip)

PR #21.

  • PR #21: Create EmptyArray with unknown type.

Release 0.1.20

Monday, 11 November, 2019 (tar, zip)

PR #20.

  • PR #20: Support unsigned index type for 32-bit.

Release 0.1.19

Sunday, 03 November, 2019 (tar, zip)

PR #19. (Essentially the same as tag 0.1.18, but I need a new version number because the last deployment was unexpectedly successful.)

(no pull requests)

Release 0.1.18

  • PR #19: Use a JSON library to feed FillableArray.

Release 0.1.17

Tuesday, 22 October, 2019 (pip, tar, zip)

Maybe fixed Linux deployment.

(no pull requests)

Release 0.1.16

Tuesday, 22 October, 2019 (tar, zip)

Debug Linux deployment.

(no pull requests)

Release 0.1.15

Tuesday, 22 October, 2019 (tar, zip)

PR #18.

  • PR #18: Implement Fillable, which are append-only, non-readable arrays.

Release 0.1.14

Monday, 14 October, 2019 (tar, zip)

PR #17.

  • PR #17: Put all array classes in an ‘array’ directory (‘include’, ‘src’, and ‘_numba’).

Release 0.1.13

Thursday, 10 October, 2019 (tar, zip)

PR #16.

  • PR #16: Finish getitem for RawArray.

Release 0.1.12

Thursday, 10 October, 2019 (tar, zip)

PR #15.

  • PR #15: Implement all of the getitem cases for NumpyArray/ListArray in Numba.

Release 0.1.11

Friday, 04 October, 2019 (tar, zip)

PR #14.

  • PR #14: Finish up getitem: handle all slice types but newaxis.

Release 0.1.10

Friday, 04 October, 2019 (tar, zip)

PR #13.

  • PR #13: Error-handling as a struct, rather than just a string.

Release 0.1.9

Wednesday, 02 October, 2019 (tar, zip)

Test deployment from Azure running on scikit-hep.

(no pull requests)

Release 0.1.8

Wednesday, 02 October, 2019 (tar, zip)

PR #12.

  • PR #12: Access ListArray::getitem in Numba.

Release 0.1.7

Thursday, 26 September, 2019 (pip, tar, zip)

The half-thought-through PR10 tests were failing in 32-bit, so I removed them for the sake of deployment. I’ll revisit RawArray someday.

(no pull requests)

Release 0.1.6

Thursday, 26 September, 2019 (tar, zip)

Try to fix manylinux1 deployment again.

(no pull requests)

Release 0.1.5

Thursday, 26 September, 2019 (tar, zip)

Try to fix manylinux1 deployment.

(no pull requests)

Release 0.1.4

Thursday, 26 September, 2019 (tar, zip)

Through PR #11 (implemented ListArray and ListOffsetArray’s __getitem__).

  • PR #11: Implemented ListArray and ListOffsetArray’s __getitem__.

  • PR #9: Propagate identity through NumpyArray::getitem.

Release 0.1.3

Saturday, 21 September, 2019 (tar, zip)

Fix CMake version check again (for Linux2010).

(no pull requests)

Release 0.1.2

Saturday, 21 September, 2019 (tar, zip)

Protect Linux2010 from visibility setting (which is intended for MacOS, anyway).

(no pull requests)

Release 0.1.1

Saturday, 21 September, 2019 (tar, zip)

PR #8: C++ NumpyArray::getitem is done, setting the pattern for other classes (external C functions).

The Numba and Identity extensions are not done, which would be necessary to fully set the pattern.

  • PR #8: Deep __getitem__ in C++.

  • PR #7: 32-bit and 64-bit versions of Index, Identifer, and ListOffsetArray (and all future Arrays).

  • PR #6: Iterators, deep iteration, iteration in Python and Numba.

  • PR #5: Numba version of the Identity class.

Release 0.1.0

Tuesday, 27 August, 2019 (pip, tar, zip)

Up through PR #4: NumpyArray and ListOffsetArray usable in C++, Python, and Numpy. C++ and Python have an Identity framework for particle kinematics (see [combinatorics language]( The dummy1 and dummy3 functions tested in deployments 0.0.x have been removed (Identity has some real code in cpu-kernels).

  • PR #4: Design an “identity” system, like the surrogate key in PartiQL.

  • PR #3: Develop Numba extensions for NumpyArray and ListOffsetArray.