pax_global_header 0000666 0000000 0000000 00000000064 14625435530 0014521 g ustar 00root root 0000000 0000000 52 comment=45c708d29db368eaf451ff7b323b32bcebbef46c
awkward-2.6.5/ 0000775 0000000 0000000 00000000000 14625435530 0013173 5 ustar 00root root 0000000 0000000 awkward-2.6.5/.DS_Store 0000664 0000000 0000000 00000020004 14625435530 0014652 0 ustar 00root root 0000000 0000000 Bud1 c a c h e _ @ € @ € @ € @ _ _ p y c a c h e _ _Ilocblob A .ÿÿÿÿÿÿ a w k w a r d - c p pIlocblob ¯ .ÿÿÿÿÿÿ a w k w a r d - c p pfdscbool c i b u i l d w h e e l . t o m lIlocblob .ÿÿÿÿÿÿ C I T A T I O N . c f fIlocblob ‹ .ÿÿÿÿÿÿ c o d e c o v . y m lIlocblob ù .ÿÿÿÿÿÿ C O N T R I B U T I N G . m dIlocblob g .ÿÿÿÿÿÿ d e vIlocblob Õ .ÿÿÿÿÿÿ d e vfdscbool d o c sIlocblob A žÿÿÿÿÿÿ d o c s - i m gIlocblob ¯ žÿÿÿÿÿÿ h e a d e r - o n l yIlocblob žÿÿÿÿÿÿ
j u l i a p k g . j s o nIlocblob ‹ žÿÿÿÿÿÿ k e r n e l - s p e c i f i c a t i o n . y m lIlocblob ù žÿÿÿÿÿÿ k e r n e l - t e s t - d a t a . j s o nIlocblob g žÿÿÿÿÿÿ L I C E N S EIlocblob Õ žÿÿÿÿÿÿ
n o x f i l e . p yIlocblob A ÿÿÿÿÿÿ p y p r o j e c t . t o m lIlocblob ¯ ÿÿÿÿÿÿ R E A D M E . m dIlocblob ÿÿÿÿÿÿ r e q u i r e m e n t s - t e s t - f u l l . t x tIlocblob ‹ ÿÿÿÿÿÿ r e q u i r e m e n t s - t e s t - m i n i m a l . t x tIlocblob ù ÿÿÿÿÿÿ r e q u i r e m e n t s - t e s t - p y p y . t x tIlocblob g ÿÿÿÿÿÿ s r cIlocblob Õ ÿÿÿÿÿÿ s t u d i e sIlocblob A ~ÿÿÿÿÿÿ t e s t sIlocblob ¯ ~ÿÿÿÿÿÿ t e s t sbwspblob ·bplist00Ö]ShowStatusBar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowSidebar _{{70, 425}, {920, 436}} #/;R_klmno‰
Š t e s t sfdscbool t e s t svSrnlong
t e s t s - c u d aIlocblob ~ÿÿÿÿÿÿ t e s t s - c u d a - k e r n e l sIlocblob ‹ ~ÿÿÿÿÿÿ E DSDB ` € @ € @ € @ r cIlocblob Õ ÿÿÿÿÿÿ s t u d i e sIlocblob A ~ÿÿÿÿÿÿ t e s t sIlocblob ¯ ~ÿÿÿÿÿÿ t e s t sbwspblob ·bplist00Ö]ShowStatusBar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowSidebar _{{70, 425}, {920, 436}} #/;R_klmno‰
Š t e s t sfdscbool t e s t svSrnlong
t e s t s - c u d aIlocblob ~ÿÿÿÿÿÿ t e s t s - c u d a - k e r n e l sIlocblob ‹ ~ÿÿÿÿÿÿ awkward-2.6.5/.all-contributorsrc 0000664 0000000 0000000 00000027772 14625435530 0017043 0 ustar 00root root 0000000 0000000 {
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "jpivarski",
"name": "Jim Pivarski",
"avatar_url": "https://avatars0.githubusercontent.com/u/1852447?v=4",
"profile": "https://github.com/jpivarski",
"contributions": [
"code",
"doc",
"infra",
"maintenance"
]
},
{
"login": "ianna",
"name": "Ianna Osborne",
"avatar_url": "https://avatars0.githubusercontent.com/u/1390682?v=4",
"profile": "https://github.com/ianna",
"contributions": [
"code"
]
},
{
"login": "reikdas",
"name": "Pratyush Das",
"avatar_url": "https://avatars0.githubusercontent.com/u/11775615?v=4",
"profile": "https://github.com/reikdas",
"contributions": [
"code"
]
},
{
"login": "trickarcher",
"name": "Anish Biswas",
"avatar_url": "https://avatars3.githubusercontent.com/u/39878675?v=4",
"profile": "https://github.com/trickarcher",
"contributions": [
"code"
]
},
{
"login": "glass-ships",
"name": "glass-ships",
"avatar_url": "https://avatars2.githubusercontent.com/u/26975530?v=4",
"profile": "https://github.com/glass-ships",
"contributions": [
"code",
"test"
]
},
{
"login": "henryiii",
"name": "Henry Schreiner",
"avatar_url": "https://avatars1.githubusercontent.com/u/4616906?v=4",
"profile": "http://iscinumpy.gitlab.io",
"contributions": [
"code",
"infra"
]
},
{
"login": "nsmith-",
"name": "Nicholas Smith",
"avatar_url": "https://avatars2.githubusercontent.com/u/6587412?v=4",
"profile": "https://github.com/nsmith-",
"contributions": [
"code",
"test"
]
},
{
"login": "lgray",
"name": "Lindsey Gray",
"avatar_url": "https://avatars0.githubusercontent.com/u/1068089?v=4",
"profile": "https://github.com/lgray",
"contributions": [
"code",
"test"
]
},
{
"login": "Ellipse0934",
"name": "Ellipse0934",
"avatar_url": "https://avatars3.githubusercontent.com/u/7466364?v=4",
"profile": "https://github.com/Ellipse0934",
"contributions": [
"test"
]
},
{
"login": "veprbl",
"name": "Dmitry Kalinkin",
"avatar_url": "https://avatars1.githubusercontent.com/u/245573?v=4",
"profile": "https://gitlab.com/veprbl",
"contributions": [
"infra"
]
},
{
"login": "EscottC",
"name": "Charles Escott",
"avatar_url": "https://avatars3.githubusercontent.com/u/48469669?v=4",
"profile": "https://www.linkedin.com/in/charles-c-escott/",
"contributions": [
"code"
]
},
{
"login": "masonproffitt",
"name": "Mason Proffitt",
"avatar_url": "https://avatars3.githubusercontent.com/u/32773304?v=4",
"profile": "https://github.com/masonproffitt",
"contributions": [
"code"
]
},
{
"login": "mhedges",
"name": "Michael Hedges",
"avatar_url": "https://avatars3.githubusercontent.com/u/18672512?v=4",
"profile": "https://github.com/mhedges",
"contributions": [
"code"
]
},
{
"login": "guitargeek",
"name": "Jonas Rembser",
"avatar_url": "https://avatars2.githubusercontent.com/u/6578603?v=4",
"profile": "https://github.com/guitargeek",
"contributions": [
"code"
]
},
{
"login": "Jayd-1234",
"name": "Jaydeep Nandi",
"avatar_url": "https://avatars0.githubusercontent.com/u/34567389?v=4",
"profile": "https://github.com/Jayd-1234",
"contributions": [
"code"
]
},
{
"login": "benkrikler",
"name": "benkrikler",
"avatar_url": "https://avatars0.githubusercontent.com/u/4083697?v=4",
"profile": "https://github.com/benkrikler",
"contributions": [
"code"
]
},
{
"login": "bfis",
"name": "bfis",
"avatar_url": "https://avatars0.githubusercontent.com/u/15651150?v=4",
"profile": "https://github.com/bfis",
"contributions": [
"code"
]
},
{
"login": "douglasdavis",
"name": "Doug Davis",
"avatar_url": "https://avatars2.githubusercontent.com/u/3202090?v=4",
"profile": "https://ddavis.io/",
"contributions": [
"code"
]
},
{
"login": "jpata",
"name": "Joosep Pata",
"avatar_url": "https://avatars0.githubusercontent.com/u/69717?v=4",
"profile": "http://twitter: @JoosepPata",
"contributions": [
"ideas"
]
},
{
"login": "martindurant",
"name": "Martin Durant",
"avatar_url": "https://avatars1.githubusercontent.com/u/6042212?v=4",
"profile": "http://martindurant.github.io/",
"contributions": [
"ideas"
]
},
{
"login": "gordonwatts",
"name": "Gordon Watts",
"avatar_url": "https://avatars2.githubusercontent.com/u/1778366?v=4",
"profile": "http://gordonwatts.wordpress.com",
"contributions": [
"ideas"
]
},
{
"login": "nikoladze",
"name": "Nikolai Hartmann",
"avatar_url": "https://avatars0.githubusercontent.com/u/3707225?v=4",
"profile": "https://gitlab.com/nikoladze",
"contributions": [
"code"
]
},
{
"login": "sjperkins",
"name": "Simon Perkins",
"avatar_url": "https://avatars3.githubusercontent.com/u/3530212?v=4",
"profile": "https://github.com/sjperkins",
"contributions": [
"code"
]
},
{
"login": "drahnreb",
"name": ".hard",
"avatar_url": "https://avatars.githubusercontent.com/u/25883607?v=4",
"profile": "https://github.com/drahnreb",
"contributions": [
"code",
"test"
]
},
{
"login": "HenryDayHall",
"name": "HenryDayHall",
"avatar_url": "https://avatars.githubusercontent.com/u/12996763?v=4",
"profile": "https://github.com/HenryDayHall",
"contributions": [
"code"
]
},
{
"login": "agoose77",
"name": "Angus Hollands",
"avatar_url": "https://avatars.githubusercontent.com/u/1248413?v=4",
"profile": "https://github.com/agoose77",
"contributions": [
"test",
"code"
]
},
{
"login": "ioanaif",
"name": "ioanaif",
"avatar_url": "https://avatars.githubusercontent.com/u/9751871?v=4",
"profile": "https://github.com/ioanaif",
"contributions": [
"code",
"test"
]
},
{
"login": "bmwiedemann",
"name": "Bernhard M. Wiedemann",
"avatar_url": "https://avatars.githubusercontent.com/u/637990?v=4",
"profile": "http://lizards.opensuse.org/author/bmwiedemann/",
"contributions": [
"maintenance"
]
},
{
"login": "matthewfeickert",
"name": "Matthew Feickert",
"avatar_url": "https://avatars.githubusercontent.com/u/5142394?v=4",
"profile": "http://www.matthewfeickert.com/",
"contributions": [
"maintenance"
]
},
{
"login": "SantamRC",
"name": "Santam Roy Choudhury",
"avatar_url": "https://avatars.githubusercontent.com/u/52635773?v=4",
"profile": "https://github.com/SantamRC",
"contributions": [
"test"
]
},
{
"login": "BioGeek",
"name": "Jeroen Van Goey",
"avatar_url": "https://avatars.githubusercontent.com/u/59344?v=4",
"profile": "http://jeroen.vangoey.be",
"contributions": [
"doc"
]
},
{
"login": "Ahmad-AlSubaie",
"name": "Ahmad-AlSubaie",
"avatar_url": "https://avatars.githubusercontent.com/u/32343365?v=4",
"profile": "https://github.com/Ahmad-AlSubaie",
"contributions": [
"code"
]
},
{
"login": "ManasviGoyal",
"name": "Manasvi Goyal",
"avatar_url": "https://avatars.githubusercontent.com/u/55101825?v=4",
"profile": "https://github.com/ManasviGoyal",
"contributions": [
"code"
]
},
{
"login": "aryan26roy",
"name": "Aryan Roy",
"avatar_url": "https://avatars.githubusercontent.com/u/50577809?v=4",
"profile": "https://github.com/aryan26roy",
"contributions": [
"code"
]
},
{
"login": "Saransh-cpp",
"name": "Saransh",
"avatar_url": "https://avatars.githubusercontent.com/u/74055102?v=4",
"profile": "https://saransh-cpp.github.io/",
"contributions": [
"code"
]
},
{
"login": "Laurits7",
"name": "Laurits Tani",
"avatar_url": "https://avatars.githubusercontent.com/u/30724920?v=4",
"profile": "https://github.com/Laurits7",
"contributions": [
"doc"
]
},
{
"login": "dsavoiu",
"name": "Daniel Savoiu",
"avatar_url": "https://avatars.githubusercontent.com/u/17005255?v=4",
"profile": "https://github.com/dsavoiu",
"contributions": [
"code"
]
},
{
"login": "raybellwaves",
"name": "Ray Bell",
"avatar_url": "https://avatars.githubusercontent.com/u/17162724?v=4",
"profile": "https://sites.google.com/view/raybellwaves/home",
"contributions": [
"doc"
]
},
{
"login": "zonca",
"name": "Andrea Zonca",
"avatar_url": "https://avatars.githubusercontent.com/u/383090?v=4",
"profile": "https://zonca.dev",
"contributions": [
"code"
]
},
{
"login": "chrisburr",
"name": "Chris Burr",
"avatar_url": "https://avatars.githubusercontent.com/u/5220533?v=4",
"profile": "https://github.com/chrisburr",
"contributions": [
"infra"
]
},
{
"login": "zbilodea",
"name": "Zoë Bilodeau",
"avatar_url": "https://avatars.githubusercontent.com/u/70441641?v=4",
"profile": "https://github.com/zbilodea",
"contributions": [
"code"
]
},
{
"login": "raymondEhlers",
"name": "Raymond Ehlers",
"avatar_url": "https://avatars.githubusercontent.com/u/1571927?v=4",
"profile": "https://github.com/raymondEhlers",
"contributions": [
"maintenance"
]
},
{
"login": "mloning",
"name": "Markus Löning",
"avatar_url": "https://avatars.githubusercontent.com/u/21020482?v=4",
"profile": "https://www.mloning.com/",
"contributions": [
"doc"
]
},
{
"login": "kkothari2001",
"name": "Kush Kothari",
"avatar_url": "https://avatars.githubusercontent.com/u/53650538?v=4",
"profile": "https://github.com/kkothari2001",
"contributions": [
"code",
"test"
]
},
{
"login": "jrueb",
"name": "Jonas Rübenach",
"avatar_url": "https://avatars.githubusercontent.com/u/30041073?v=4",
"profile": "https://github.com/jrueb",
"contributions": [
"code"
]
},
{
"login": "Moelf",
"name": "Jerry Ling",
"avatar_url": "https://avatars.githubusercontent.com/u/5306213?v=4",
"profile": "http://blog.jling.dev",
"contributions": [
"doc"
]
},
{
"login": "lobis",
"name": "Luis Antonio Obis Aparicio",
"avatar_url": "https://avatars.githubusercontent.com/u/35803280?v=4",
"profile": "https://github.com/lobis",
"contributions": [
"code"
]
},
{
"login": "tcawlfield",
"name": "Topher Cawlfield",
"avatar_url": "https://avatars.githubusercontent.com/u/4094385?v=4",
"profile": "https://github.com/tcawlfield",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,
"projectName": "awkward",
"projectOwner": "scikit-hep",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true,
"commitConvention": "angular",
"commitType": "docs"
}
awkward-2.6.5/.github/ 0000775 0000000 0000000 00000000000 14625435530 0014533 5 ustar 00root root 0000000 0000000 awkward-2.6.5/.github/ISSUE_TEMPLATE/ 0000775 0000000 0000000 00000000000 14625435530 0016716 5 ustar 00root root 0000000 0000000 awkward-2.6.5/.github/ISSUE_TEMPLATE/bug-report.yml 0000664 0000000 0000000 00000003532 14625435530 0021532 0 ustar 00root root 0000000 0000000 name: "Bug report"
description: "Something seems to be broken…"
labels: ["bug (unverified)"]
assignees: []
body:
- type: input
id: version
attributes:
label: "Version of Awkward Array"
description: |
```python
>>> import awkward as ak
>>> ak.__version__
```
(Your issue might have already been fixed; see [latest version](https://pypi.org/project/awkward/).)
placeholder: "XX.YY.ZZ"
validations:
required: true
- type: textarea
id: description
attributes:
label: "Description and code to reproduce"
description: |
- What did you attempt to do? Include code so that we can reproduce it (in [backticks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks)).
- What did you expect it to do?
- What did it do instead? (Include full log output in [backticks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks). Copy-pasted text is better than screenshots.)
If your code example requires data, be sure to include it in a way that is publicly accessible, such as **clicking on the rectangle below to highlight it** and then dragging the file in. (You can [pickle](https://docs.python.org/3/library/pickle.html) Awkward Arrays, but verify that the issue applies to pickled arrays as well as the original arrays.)
placeholder: "Tell us what's not working."
validations:
required: true
- type: markdown
attributes:
value: |
Thank you for submitting an issue; we know that it takes time and effort to do so!
Note that we'll be closing the issue as soon as a solution is proposed. This is not meant to be unfriendly; it's for our own bookkeeping. If you think the first answer/solution is unsatisfactory, please do continue the thread and we'll reopen it or otherwise address it.
awkward-2.6.5/.github/ISSUE_TEMPLATE/config.yml 0000664 0000000 0000000 00000000730 14625435530 0020706 0 ustar 00root root 0000000 0000000 blank_issues_enabled: true
contact_links:
- name: "Start a discussion (GitHub)"
about: "How do I…?"
url: https://github.com/scikit-hep/awkward-1.0/discussions
- name: "StackOverflow: [awkward-array] tag"
about: "How do I…?"
url: https://stackoverflow.com/questions/tagged/awkward-array
- name: "Gitter: Scikit-HEP/awkward-array room"
about: "Getting help in real-time…"
url: https://gitter.im/Scikit-HEP/awkward-array
awkward-2.6.5/.github/ISSUE_TEMPLATE/documentation.yml 0000664 0000000 0000000 00000002104 14625435530 0022307 0 ustar 00root root 0000000 0000000 name: "Documentation"
description: "Something needs to be explained…"
labels: ["docs"]
assignees: []
body:
- type: dropdown
id: where
attributes:
label: "Which documentation?"
description: |
In the [documentation website](https://awkward-array.org/), the [GitHub README.md](https://github.com/scikit-hep/awkward/blob/main/README.md), [CONTRIBUTING.md](https://github.com/scikit-hep/awkward/blob/main/CONTRIBUTING.md), Python docstrings, or C++ doxygen comments?
options:
- Documentation website
- GitHub README.md
- CONTRIBUTING.md
- Python docstrings
- C++ doxygen comments
- Other (please explain)?
validations:
required: true
- type: textarea
id: what
attributes:
label: "What needs to be documented?"
description: |
If you need to include a screenshot, try **clicking on the rectangle below to highlight it** and then dragging the file in or pasting from the clipboard.
placeholder: "Tell us what you need to know."
validations:
required: true
awkward-2.6.5/.github/ISSUE_TEMPLATE/feature-request.yml 0000664 0000000 0000000 00000002401 14625435530 0022557 0 ustar 00root root 0000000 0000000 name: "Feature request"
description: "Some functionality needs to be added…"
labels: ["feature"]
assignees: []
body:
- type: markdown
attributes:
value: |
What you're looking for might already be possible as a combination of existing functions, but ask anyway. If what you want can be performed by a combination of existing features, we'll convert this issue into a [Discussion Q&A](https://github.com/scikit-hep/awkward-1.0/discussions/categories/q-a).
The following links might help:
* [awkward-array.org](https://awkward-array.org/)
* [StackOverflow: [awkward-array] tag](https://stackoverflow.com/questions/tagged/awkward-array)
* [Gitter: Scikit-HEP/awkward-array room](https://gitter.im/Scikit-HEP/awkward-array)
- type: textarea
id: feature
attributes:
label: "Description of new feature"
placeholder: "Tell us what you need."
description: |
Please be specific, with code examples and expected output (in [backticks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks)) where it would help.
If you need to include a file, try **clicking on the rectangle below to highlight it** and then dragging the file in.
validations:
required: true
awkward-2.6.5/.github/ISSUE_TEMPLATE/performance-bug-report.yml 0000664 0000000 0000000 00000003671 14625435530 0024035 0 ustar 00root root 0000000 0000000 name: "Performance bug report"
description: "It works, but it could/should be faster…"
labels: ["performance"]
assignees: []
body:
- type: markdown
attributes:
value: |
The goal of these issues is to fix performance "mistakes," instances where a fix would make the majority of applications several times faster or more, not fine-tuning an application or trading performance in one case for another (unless the former is a very rare or unusual case).
To prove that something is a performance mistake, it needs to have a reproducible metric and a demonstration that shows how fast it could be in bare metal, such as equivalent C or Numba code. If the comparison is truly equivalent (i.e. a general-purpose function is not compared with a highly specialized one), we'll try to optimize the metric within a factor of 2 or so of the baseline.
Alternatively, if you've found a mistake in the code that would always be faster if fixed, we can fix it without tests. Some bugs are obvious.
- type: input
id: version
attributes:
label: "Version of Awkward Array"
description: |
```python
>>> import awkward as ak
>>> ak.__version__
```
(Your issue might have already been fixed; see [latest version](https://pypi.org/project/awkward/).)
placeholder: "XX.YY.ZZ"
validations:
required: true
- type: textarea
id: description
attributes:
label: "Description and code to reproduce"
description: |
If your code example requires data, be sure to include it in a way that is publicly accessible, such as **clicking on the rectangle below to highlight it** and then dragging the file in. (You can [pickle](https://docs.python.org/3/library/pickle.html) Awkward Arrays, but verify that the issue applies to pickled arrays as well as the original arrays.)
placeholder: "Tell us what should be faster."
validations:
required: true
awkward-2.6.5/.github/dependabot.yml 0000664 0000000 0000000 00000000340 14625435530 0017360 0 ustar 00root root 0000000 0000000 version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
actions:
patterns:
- "*"
awkward-2.6.5/.github/matchers/ 0000775 0000000 0000000 00000000000 14625435530 0016341 5 ustar 00root root 0000000 0000000 awkward-2.6.5/.github/matchers/pylint.json 0000664 0000000 0000000 00000001234 14625435530 0020553 0 ustar 00root root 0000000 0000000 {
"problemMatcher": [
{
"severity": "warning",
"pattern": [
{
"regexp": "^([^:]+):(\\d+):(\\d+): ([A-DF-Z]\\d+): \\033\\[[\\d;]+m([^\\033]+).*$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
],
"owner": "pylint-warning"
},
{
"severity": "error",
"pattern": [
{
"regexp": "^([^:]+):(\\d+):(\\d+): (E\\d+): \\033\\[[\\d;]+m([^\\033]+).*$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
],
"owner": "pylint-error"
}
]
}
awkward-2.6.5/.github/workflows/ 0000775 0000000 0000000 00000000000 14625435530 0016570 5 ustar 00root root 0000000 0000000 awkward-2.6.5/.github/workflows/build-wheels.yml 0000664 0000000 0000000 00000011744 14625435530 0021706 0 ustar 00root root 0000000 0000000 name: Build wheels
on:
# Run daily at 1:23 UTC
schedule:
- cron: '23 1 * * *'
# Run on demand with workflow dispatch
workflow_dispatch:
# Use from other workflows
workflow_call:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
determine-source-date-epoch:
name: "Determine SOURCE_DATE_EPOCH"
runs-on: ubuntu-latest
outputs:
source-date-epoch: ${{ steps.log.outputs.source-date-epoch }}
if: github.repository_owner == 'scikit-hep'
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- id: log
name: Compute SOURCE_DATE_EPOCH
run: |
# Find latest unix timestamp in awkward-cpp, and the kernel generation files
epoch=$( git log -1 --format=%at -- awkward-cpp kernel-specification.yml kernel-test-data.json )
echo "source-date-epoch=$epoch" >> $GITHUB_OUTPUT
make_sdist:
name: "Build awkward-cpp sdist"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build awkward-cpp sdist
run: pipx run build --sdist awkward-cpp
- name: Check metadata
run: pipx run twine check awkward-cpp/dist/*
- uses: actions/upload-artifact@v4
with:
name: awkward-cpp-sdist
path: awkward-cpp/dist/*.tar.gz
build_wheels:
needs: [determine-source-date-epoch]
name: "Wheel awkward-cpp: ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }} with ${{ matrix.build }}"
runs-on: ${{ matrix.os }}
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
strategy:
matrix:
os: [ubuntu-latest, macos-12]
arch: [auto64]
build: ["cp", "pp"]
include:
- os: macos-12
type: "Universal"
arch: universal2
build: "cp"
- os: windows-latest
arch: auto64
build: "cp"
- os: windows-latest
arch: auto32
build: "cp{38,39}-"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Prepare build files
run: pipx run nox -s prepare
- uses: pypa/cibuildwheel@v2.18.1
env:
CIBW_BUILD: "${{ matrix.build }}*"
CIBW_ARCHS: ${{ matrix.arch }}
with:
config-file: cibuildwheel.toml
package-dir: awkward-cpp
- name: Check metadata
shell: python
run: |
import subprocess, glob
subprocess.run(
["pipx", "run", "twine", "check", *glob.glob("wheelhouse/*.whl")],
check=True
)
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: awkward-cpp-wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.build }}
path: wheelhouse/*.whl
build_alt_wheels:
needs: [determine-source-date-epoch]
name: "Wheel awkward-cpp: ${{ matrix.python }} on ${{ matrix.arch }}"
runs-on: ubuntu-latest
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
strategy:
matrix:
python: [38, 39, 310, 311, 312]
arch: [aarch64]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Prepare build files
run: pipx run nox -s prepare
- uses: docker/setup-qemu-action@v3.0.0
- uses: pypa/cibuildwheel@v2.18.1
env:
CIBW_BUILD: cp${{ matrix.python }}-*
CIBW_ARCHS: ${{ matrix.arch }}
with:
config-file: cibuildwheel.toml
package-dir: awkward-cpp
- name: Check metadata
shell: python
run: |
import subprocess, glob
subprocess.run(
["pipx", "run", "twine", "check", *glob.glob("wheelhouse/*.whl")],
check=True
)
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: awkward-cpp-wheels-${{ matrix.arch }}-py${{ matrix.python }}
path: wheelhouse/*.whl
build_awkward_wheel:
name: "Build awkward sdist and wheel"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build distributions
run: pipx run build
- name: Check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@v4
with:
name: awkward-wheel
path: dist/*
awkward-2.6.5/.github/workflows/coverage.yml 0000664 0000000 0000000 00000004175 14625435530 0021115 0 ustar 00root root 0000000 0000000 name: Codecov
on:
push:
branches:
- main
paths-ignore:
- README.md
- CONTRIBUTING.md
- CITATION.cff
- LICENSE
- .readthedocs.yml
- docs-img/**
- docs/**
- awkward-cpp/docs/**
- studies/**
workflow_dispatch:
concurrency:
group: 'coverage-${{ github.head_ref || github.run_id }}'
cancel-in-progress: true
env:
# Leverage reproducible builds by setting a constant SOURCE_DATE_EPOCH
# This will ensure that the hash of the awkward-cpp directory remains
# constant for unchanged files, meaning that it can be used for caching
SOURCE_DATE_EPOCH: "1668811211"
jobs:
coverage:
runs-on: ubuntu-20.04
name: Run Codecov
env:
PIP_ONLY_BINARY: cmake
PYTHON_VERSION: "3.9"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: 'Python ${{ env.PYTHON_VERSION }}'
uses: actions/setup-python@v5
with:
python-version: '${{ env.PYTHON_VERSION }}'
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures --tests
- name: Cache awkward-cpp wheel
id: cache-awkward-cpp-wheel
uses: actions/cache@v4
with:
path: ./awkward-cpp/dist
key: ${{ github.job }}-${{ env.PYTHON_VERSION }}-${{ hashFiles('awkward-cpp/**') }}
- name: Build awkward-cpp wheel
if: steps.cache-awkward-cpp-wheel.outputs.cache-hit != 'true'
run: |
python -m pip install build
python -m build -w ./awkward-cpp
ls ./awkward-cpp/dist
- name: Install awkward-cpp
run: python -m pip install -v ./awkward-cpp/dist/*.whl
- name: Build & install awkward
run: python -m pip install -v .
- name: Print versions
run: python -m pip list
- name: Install test requirements
run: python -m pip install -v -r requirements-test-full.txt
- name: Test
run: >-
python -m pytest -vv -rs tests --cov=awkward --cov-report=term
--cov-report=xml
- name: Upload Codecov results
uses: codecov/codecov-action@v4
awkward-2.6.5/.github/workflows/deploy-cpp.yml 0000664 0000000 0000000 00000001710 14625435530 0021366 0 ustar 00root root 0000000 0000000 name: Deploy C++
on:
workflow_dispatch:
inputs:
publish-pypi:
type: boolean
description: Publish to PyPI
jobs:
build-wheels:
uses: ./.github/workflows/build-wheels.yml
upload-awkward-cpp:
needs: [build-wheels]
runs-on: ubuntu-latest
if: inputs.publish-pypi
permissions:
id-token: write
attestations: write
contents: read
environment:
name: "pypi"
url: "https://pypi.org/project/awkward-cpp/"
steps:
- uses: actions/download-artifact@v4
with:
pattern: "awkward-cpp*"
path: dist
merge-multiple: true
- name: List distributions to be deployed
run: ls -l dist/
- name: Generate artifact attestation for sdist and wheel
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "dist/awkward-cpp-*"
- uses: pypa/gh-action-pypi-publish@v1.8.14
awkward-2.6.5/.github/workflows/deploy.yml 0000664 0000000 0000000 00000010345 14625435530 0020612 0 ustar 00root root 0000000 0000000 name: Deploy
on:
workflow_dispatch:
inputs:
publish-pypi:
type: boolean
description: Publish to PyPI
release:
types:
- published
jobs:
determine-source-date-epoch:
name: "Determine SOURCE_DATE_EPOCH"
runs-on: ubuntu-latest
outputs:
source-date-epoch: ${{ steps.log.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- id: log
name: Compute SOURCE_DATE_EPOCH
run: |
# Find latest unix timestamp in awkward-cpp, and the kernel generation files
epoch=$( git log -1 --format=%at -- awkward-cpp kernel-specification.yml kernel-test-data.json )
echo "source-date-epoch=$epoch" >> $GITHUB_OUTPUT
check-requirements:
name: "Check awkward requirements"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Check awkward-cpp version matches requirement
run: pipx run nox -s check_cpp_constraint
check-cpp-on-pypi:
name: "Check awkward-cpp dependency on PyPI"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build awkward-cpp sdist
run: pipx run build --sdist awkward-cpp
- name: Check sdist matches PyPI
run: pipx run nox -s check_cpp_sdist_released -- awkward-cpp/dist/awkward-cpp*.tar.gz
build:
name: "Build wheel & sdist"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
permissions:
id-token: write
attestations: write
contents: read
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build distributions
run: pipx run build
- name: Check metadata
run: pipx run twine check dist/*
- name: Generate artifact attestation for sdist and wheel
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "dist/awkward-*"
- uses: actions/upload-artifact@v4
with:
name: distributions
path: dist/*
bundle-headers:
name: "Bundle header-only libraries"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/upload-artifact@v4
with:
name: header-only
path: header-only
upload:
needs: [build, check-requirements, check-cpp-on-pypi]
runs-on: ubuntu-latest
if: (github.event_name == 'release' && github.event.action == 'published') || inputs.publish-pypi
permissions:
id-token: write
environment:
name: "pypi"
url: "https://pypi.org/project/awkward/"
steps:
- uses: actions/download-artifact@v4
with:
name: distributions
path: dist
- name: List distributions to be deployed
run: ls -l dist/
- name: Verify sdist artifact attestation
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh attestation verify dist/awkward-*.tar.gz --repo ${{ github.repository }}
- name: Verify wheel artifact attestation
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh attestation verify dist/awkward-*.whl --repo ${{ github.repository }}
- uses: pypa/gh-action-pypi-publish@v1.8.14
publish-headers:
name: "Publish header-only libraries alongside release"
runs-on: ubuntu-latest
needs: [bundle-headers]
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v4
with:
name: header-only
path: header-only
- name: Create archive
run: |
# Don't include `header-only` parent directory
env -C header-only/ zip -r header-only.zip .
- uses: softprops/action-gh-release@v2
with:
files: header-only/header-only.zip
awkward-2.6.5/.github/workflows/docs-version.yml 0000664 0000000 0000000 00000002051 14625435530 0021724 0 ustar 00root root 0000000 0000000 name: Sync Docs Selector
on:
push:
branches:
- main
paths:
- docs/switcher.json
workflow_dispatch:
concurrency:
group: 'docs-version-${{ github.head_ref || github.run_id }}'
cancel-in-progress: true
jobs:
coverage:
runs-on: ubuntu-22.04
name: Push version switcher
permissions:
id-token: write
contents: read
env:
S3_BUCKET: "awkward-array.org"
CLOUDFRONT_ID: "EFM4QVENUIXHS"
environment:
name: docs
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: eu-west-2
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
# Pushes to main trigger latest
- name: Push version selector
run: |
aws s3 cp docs/switcher.json "s3://${S3_BUCKET}/doc/switcher.json"
aws cloudfront create-invalidation --distribution-id "${CLOUDFRONT_ID}" \
--paths "/doc/switcher.json"
awkward-2.6.5/.github/workflows/docs.yml 0000664 0000000 0000000 00000033173 14625435530 0020252 0 ustar 00root root 0000000 0000000 name: Docs
on:
push:
branches:
- main
pull_request:
release:
types: [released]
workflow_dispatch:
concurrency:
group: 'docs-${{ github.head_ref || github.run_id }}'
cancel-in-progress: true
env:
X86_64_PYTHON_VERSION: "3.11.0"
SOURCE_DATE_EPOCH: "1668811211"
jobs:
pyodide-python-version:
name: Determine Pyodide Python version
runs-on: ubuntu-22.04
outputs:
python-version: ${{ steps.retrieve-python-version.outputs.python-version }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache python version
id: cache-pyodide-python-version
uses: actions/cache@v4
with:
path: pyodide-python-version
key: ${{ runner.os }}-docs-pyodide-python-version-${{ hashFiles('docs/requirements-wasm.txt') }}
- name: Setup Python
if: steps.cache-pyodide-python-version.outputs.cache-hit != 'true'
uses: actions/setup-python@v5
with:
python-version: "${{ env.X86_64_PYTHON_VERSION }}"
- name: Install dependencies
if: steps.cache-pyodide-python-version.outputs.cache-hit != 'true'
run: python3 -m pip install -r docs/requirements-wasm.txt
- name: Determine Python version
if: steps.cache-pyodide-python-version.outputs.cache-hit != 'true'
id: compute-python-version
run: |
# Save Python version
PYTHON_VERSION=$(pyodide config get python_version)
echo $PYTHON_VERSION > pyodide-python-version
- name: Retrieve Python version
id: retrieve-python-version
run: |
PYTHON_VERSION=$(cat pyodide-python-version)
echo "python-version=$PYTHON_VERSION" >> "$GITHUB_OUTPUT"
awkward-cpp-wasm:
name: Build C++ WASM
runs-on: ubuntu-22.04
needs: [pyodide-python-version]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "${{ needs.pyodide-python-version.outputs.python-version }}"
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures
- name: Cache wheel
id: cache-awkward-cpp-wasm-wheel
uses: actions/cache@v4
with:
path: ./awkward-cpp/dist
key: ${{ runner.os }}-"${{ needs.pyodide-python-version.outputs.python-version }}-awkward-cpp-wasm-${{ hashFiles('awkward-cpp/**') }}
- name: Install dependencies
if: steps.cache-awkward-cpp-wasm-wheel.outputs.cache-hit != 'true'
run: python3 -m pip install -r docs/requirements-wasm.txt
- name: Determine EMSDK version
if: steps.cache-awkward-cpp-wasm-wheel.outputs.cache-hit != 'true'
id: compute-emsdk-version
run: |
# Prepare xbuild environment (side-effect)
pyodide config list
# Save EMSDK version
EMSCRIPTEN_VERSION=$(pyodide config get emscripten_version)
echo "emsdk-version=$EMSCRIPTEN_VERSION" >> $GITHUB_OUTPUT
working-directory: awkward-cpp
- name: Install EMSDK
uses: mymindstorm/setup-emsdk@v14
if: steps.cache-awkward-cpp-wasm-wheel.outputs.cache-hit != 'true'
with:
version: ${{ steps.compute-emsdk-version.outputs.emsdk-version }}
- name: Build wheel
if: steps.cache-awkward-cpp-wasm-wheel.outputs.cache-hit != 'true'
id: build-awkward-cpp-wasm-wheel
run: |
# pyodide-build doesn't work out of the box with pipx
CFLAGS=-fexceptions LDFLAGS=-fexceptions pyodide build --exports whole_archive
working-directory: awkward-cpp
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: awkward-cpp-wasm
path: awkward-cpp/dist/awkward*wasm32.whl
awkward-cpp-x86-64:
runs-on: ubuntu-22.04
name: Build C++ x86
defaults:
run:
# Ensure conda env is activated
shell: "bash -l {0}"
steps:
- uses: actions/checkout@v4
with:
submodules: true
# TODO: remove this once mamba-org/mamba#1726 is fixed
# and replace with `-r requirements.txt` in a
# non-template `environment.yml`
- name: Template environment.yml
run: pipx run --spec cogapp cog -o environment.yml environment.yml.cog
working-directory: docs
# Technically this give us an environment that is incompatible with
# the wheel built in the awkward-x86-64 job if the environments
# solve with different external library versions. By default,
# ROOT uses cxx-compiler too, so hopefully this won't be an issue
- name: Setup Python via Conda
uses: mamba-org/setup-micromamba@v1
with:
# Cache invalidates daily by default
cache-environment: true
cache-downloads: true
environment-file: docs/environment.yml
create-args: >-
python=${{ env.X86_64_PYTHON_VERSION }}
doxygen
python-build
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures
- name: Cache wheel
id: cache-awkward-cpp-x86-64-wheel
uses: actions/cache@v4
with:
path: ./awkward-cpp/dist
key: ${{ runner.os }}-${{ env.X86_64_PYTHON_VERSION }}-awkward-x86-64-wasm-${{ hashFiles('awkward-cpp/**') }}
- name: Build wheel
if: steps.cache-awkward-cpp-x86-64-wheel.outputs.cache-hit != 'true'
run: python -m build -w ./awkward-cpp
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: awkward-cpp-x86-64
path: awkward-cpp/dist/awkward*.whl
awkward:
runs-on: ubuntu-22.04
name: Build Python
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures
- name: Build wheel
run: pipx run build -w
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: awkward
path: dist/awkward*.whl
execute-cppyy:
needs: [awkward-cpp-x86-64, awkward]
runs-on: ubuntu-22.04
name: Execute cppyy notebook
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "${{ env.X86_64_PYTHON_VERSION }}"
- name: Extract pre-built manylinux cppyy wheels
uses: shrink/actions-docker-extract@v3
with:
image: "docker.io/agoose77/cppyy-wheels:cp311"
path: "/wheels/."
destination: "/tmp/wheels/"
- name: Download awkward wheel
uses: actions/download-artifact@v4
with:
name: awkward
path: /tmp/wheels/
- name: Download awkward-cpp x86_64 wheel
uses: actions/download-artifact@v4
with:
name: awkward-cpp-x86-64
path: /tmp/wheels/
- name: Install dependencies
working-directory: docs
run: python -m pip install /tmp/wheels/*.whl -r requirements.txt
- name: Execute cppyy notebook
working-directory: docs
run: jupyter nbconvert --to notebook --execute --inplace user-guide/how-to-use-in-cpp-cppyy.ipynb
- name: Save executed notebook
uses: actions/upload-artifact@v4
with:
name: how-to-use-in-cpp-cppyy
path: docs/user-guide/how-to-use-in-cpp-cppyy.ipynb
build-docs:
runs-on: ubuntu-22.04
needs: [awkward-cpp-wasm, awkward-cpp-x86-64, awkward, execute-cppyy]
name: Build Docs
defaults:
run:
# Ensure conda env is activated
shell: "bash -l {0}"
env:
DOCS_CANONICAL_VERSION: main
steps:
- uses: actions/checkout@v4
# TODO: remove this once mamba-org/mamba#1726 is fixed
# and replace with `-r requirements.txt` in a
# non-template `environment.yml`
- name: Template environment.yml
run: pipx run --spec cogapp cog -o environment.yml environment.yml.cog
working-directory: docs
# Technically this give us an environment that is incompatible with
# the wheel built in the awkward-x86-64 job if the environments
# solve with different external library versions. By default,
# ROOT uses cxx-compiler too, so hopefully this won't be an issue
- name: Setup Python via Conda
uses: mamba-org/setup-micromamba@v1
with:
# Cache invalidates daily by default
cache-environment: true
cache-downloads: true
environment-file: docs/environment.yml
create-args: >-
python=${{ env.X86_64_PYTHON_VERSION }}
doxygen
- name: Download awkward wheel
uses: actions/download-artifact@v4
with:
name: awkward
path: dist
- name: Copy awkward wheel to JupyterLite
run: |
mkdir -p docs/lite/pypi/
cp dist/awkward*.whl docs/lite/pypi/
- name: Download & copy awkward-cpp WASM wheel to JupyterLite
uses: actions/download-artifact@v4
with:
name: awkward-cpp-wasm
path: docs/lite/pypi
- name: Download awkward-cpp x86_64 wheel
uses: actions/download-artifact@v4
with:
name: awkward-cpp-x86-64
path: dist
- name: Install awkward and awkward-cpp wheels
run: python -m pip install dist/awkward*.whl --force-reinstall --no-deps
- name: Generate build files
run: pipx run nox -s prepare -- --docs --headers
- name: Generate C++ documentation
run: doxygen
working-directory: awkward-cpp/docs
- name: Copy C++ documentation
run: cp -r awkward-cpp/docs/html/ docs/_static/doxygen
- name: Enable analytics & version selector
if: github.event_name == 'push' || github.event_name == 'release'
run: |
echo "DOCS_REPORT_ANALYTICS=1" >> $GITHUB_ENV
echo "DOCS_SHOW_VERSION=1" >> $GITHUB_ENV
- name: Set version to main
if: github.event_name == 'push'
run: |
echo "DOCS_VERSION=main" >> $GITHUB_ENV
- name: Download cppyy notebook
uses: actions/download-artifact@v4
with:
name: how-to-use-in-cpp-cppyy
path: docs/user-guide
- name: Generate Python documentation
run: sphinx-build -M html . _build/ -T
working-directory: docs
- name: Upload docs artefact
uses: actions/upload-artifact@v4
with:
name: docs
path: docs/_build/html
- name: Upload Jupyter Book cache
uses: actions/upload-artifact@v4
with:
name: doctrees
path: docs/_build/doctrees
- name: Upload Jupyter Book cache
uses: actions/upload-artifact@v4
with:
name: jupyter-cache
path: docs/_build/.jupyter_cache
branch-preview:
runs-on: ubuntu-22.04
needs: [build-docs]
name: Deploy Branch Preview
# We can only deploy for PRs on host repo
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository }}
permissions:
id-token: write
contents: read
env:
S3_BUCKET: "preview.awkward-array.org"
DEPLOY_URL: "http://preview.awkward-array.org.s3-website.us-east-1.amazonaws.com"
environment:
name: docs
url: "${{ env.DEPLOY_URL }}/${{ github.head_ref }}"
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: eu-west-2
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
- name: Download rendered docs
uses: actions/download-artifact@v4
with:
name: docs
path: built-docs
- name: Sync artefacts
run: |
aws s3 sync built-docs/ "s3://${S3_BUCKET}/${{ github.head_ref }}"
deploy:
runs-on: ubuntu-22.04
needs: [ build-docs ]
# We can only deploy for PRs on host repo
if: github.event_name == 'push' || github.event_name == 'release'
name: Deploy
permissions:
id-token: write
contents: read
env:
S3_BUCKET: "awkward-array.org"
PRODUCTION_URL: "http://awkward-array.org"
CLOUDFRONT_ID: "EFM4QVENUIXHS"
environment:
name: docs
url: ${{ env.PRODUCTION_URL }}${{ steps.sync-main.outputs.path || steps.sync-stable.outputs.path }}
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: eu-west-2
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
- name: Download rendered docs
uses: actions/download-artifact@v4
with:
name: docs
path: built-docs
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
# Pushes to main trigger latest
- name: Sync `main`
if: github.event_name == 'push'
id: sync-main
run: |
aws s3 sync built-docs/ "s3://${S3_BUCKET}/doc/main/"
aws cloudfront create-invalidation --distribution-id "${CLOUDFRONT_ID}" \
--paths "/doc/main*"
echo "path=/doc/main" >> $GITHUB_OUTPUT
# Releases trigger versions
- name: Sync `stable`
if: github.event_name == 'release'
id: sync-stable
run: |
# Take only leading version
version=$(echo "${GITHUB_REF_NAME}" | sed -n -E "s/v?([0-9]+\.[0-9]+)\.[0-9]+/\1/p")
aws s3 cp docs/switcher.json "s3://${S3_BUCKET}/doc/"
aws s3 sync built-docs/ "s3://${S3_BUCKET}/doc/$version/"
aws s3 sync built-docs/ "s3://${S3_BUCKET}/doc/stable/"
aws cloudfront create-invalidation --distribution-id "${CLOUDFRONT_ID}" \
--paths "/doc/$version*" "/doc/stable*" "/doc/switcher.json"
echo "path=/doc/stable" >> $GITHUB_OUTPUT
awkward-2.6.5/.github/workflows/header-only-test.yml 0000664 0000000 0000000 00000001765 14625435530 0022510 0 ustar 00root root 0000000 0000000 name: Header-only Tests
on:
pull_request:
workflow_dispatch:
concurrency:
group: header-only-test-${{ github.head_ref }}
cancel-in-progress: true
jobs:
test:
name: "Run Tests"
strategy:
matrix:
os: [ubuntu-latest, macos-13, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Run CMake
run: |
cmake -B build -S header-only -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=bin -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON
cmake --build build/
- name: Run tests
run: |
import os
import pathlib
import subprocess
for path in pathlib.Path("build/tests/bin").glob("test_*"):
if path.is_file():
print(f"Running {path.name}", flush=True)
print("::group::Test output", flush=True)
subprocess.run([path], check=True)
print("::endgroup::", flush=True)
shell: python3 {0}
awkward-2.6.5/.github/workflows/lint.yml 0000664 0000000 0000000 00000000651 14625435530 0020263 0 ustar 00root root 0000000 0000000 name: Lint
on:
pull_request:
workflow_dispatch:
concurrency:
group: lint-${{ github.head_ref }}
cancel-in-progress: true
jobs:
pylint:
name: "Run PyLint"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Run PyLint
run: |
echo "::add-matcher::$GITHUB_WORKSPACE/.github/matchers/pylint.json"
pipx run nox -s pylint
awkward-2.6.5/.github/workflows/needs-cpp-release.yml 0000664 0000000 0000000 00000002462 14625435530 0022613 0 ustar 00root root 0000000 0000000 name: Needs C++ Release
on:
workflow_dispatch:
push:
branches:
- main
jobs:
determine-source-date-epoch:
name: "Determine SOURCE_DATE_EPOCH"
runs-on: ubuntu-latest
outputs:
source-date-epoch: ${{ steps.log.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- id: log
name: Compute SOURCE_DATE_EPOCH
run: |
# Find latest unix timestamp in awkward-cpp, and the kernel generation files
epoch=$( git log -1 --format=%at -- awkward-cpp kernel-specification.yml kernel-test-data.json )
echo "source-date-epoch=$epoch" >> $GITHUB_OUTPUT
check-cpp-on-pypi:
name: "Check awkward-cpp dependency on PyPI"
runs-on: ubuntu-latest
needs: [determine-source-date-epoch]
env:
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build awkward-cpp sdist
run: pipx run build --sdist awkward-cpp
- name: Check sdist matches PyPI
run: pipx run nox -s check_cpp_sdist_released -- awkward-cpp/dist/awkward-cpp*.tar.gz
awkward-2.6.5/.github/workflows/packaging-test.yml 0000664 0000000 0000000 00000003655 14625435530 0022225 0 ustar 00root root 0000000 0000000 name: Packaging Tests
on:
pull_request:
workflow_dispatch:
concurrency:
group: packaging-test-${{ github.head_ref }}
cancel-in-progress: true
env:
SOURCE_DATE_EPOCH: "1668811211"
jobs:
build_awkward_sdist_wheel:
name: "Build awkward"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- name: Build awkward SDist & wheel
run: pipx run build
- name: Check metadata
run: pipx run twine check dist/*
- name: Build awkward-cpp SDist
run: pipx run build --sdist awkward-cpp
- uses: actions/upload-artifact@v4
with:
name: awkward-sdist
path: dist/*.tar.gz
- uses: actions/upload-artifact@v4
with:
name: awkward-wheel
path: dist/*.whl
- uses: actions/upload-artifact@v4
with:
name: awkward-cpp-sdist
path: awkward-cpp/dist/*.tar.gz
build_cpp_wheels:
name: "Build awkward-cpp: ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-12, ubuntu-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare build files
run: pipx run nox -s prepare
- uses: pypa/cibuildwheel@v2.18.1
env:
CIBW_ARCHS_MACOS: universal2
CIBW_BUILD: cp39-win_amd64 cp310-manylinux_x86_64 cp38-macosx_universal2
with:
config-file: cibuildwheel.toml
package-dir: awkward-cpp
- uses: pypa/cibuildwheel@v2.18.1
if: matrix.os == 'ubuntu-latest'
env:
CIBW_BUILD: cp312-manylinux_x86_64
with:
config-file: cibuildwheel.toml
package-dir: awkward-cpp
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: awkward-cpp-wheels-${{ matrix.os }}
path: wheelhouse/*.whl
awkward-2.6.5/.github/workflows/semantic-pr-title.yml 0000664 0000000 0000000 00000000635 14625435530 0022660 0 ustar 00root root 0000000 0000000 name: "Lint PR"
on:
pull_request:
types:
- opened
- edited
- synchronize
workflow_dispatch:
concurrency:
group: semantic-pr-title-${{ github.head_ref }}
cancel-in-progress: true
jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5.5.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
awkward-2.6.5/.github/workflows/test.yml 0000664 0000000 0000000 00000017454 14625435530 0020305 0 ustar 00root root 0000000 0000000 name: Tests
on:
pull_request:
paths-ignore:
- README.md
- CONTRIBUTING.md
- CITATION.cff
- LICENSE
- .readthedocs.yml
- docs-img/**
- docs/**
- awkward-cpp/docs/**
- studies/**
schedule:
- cron: 0 12 1 * *
workflow_dispatch:
concurrency:
group: 'test-${{ github.head_ref || github.run_id }}'
cancel-in-progress: true
env:
# Leverage reproducible builds by setting a constant SOURCE_DATE_EPOCH
# This will ensure that the hash of the awkward-cpp directory remains
# constant for unchanged files, meaning that it can be used for caching
SOURCE_DATE_EPOCH: "1668811211"
jobs:
run-tests:
name: Run Tests
strategy:
fail-fast: false
matrix:
runs-on:
- windows-latest
- ubuntu-latest
- macos-11
python-version:
- '3.12'
- '3.11'
- '3.10'
- '3.9'
- '3.8'
python-architecture:
- x64
dependencies-kind:
- full
include:
- python-version: '3.9'
python-architecture: x86
runs-on: windows-latest
dependencies-kind: full
- python-version: '3.8'
python-architecture: x64
runs-on: ubuntu-latest
dependencies-kind: minimal
- python-version: 'pypy3.9'
python-architecture: x64
runs-on: ubuntu-latest
dependencies-kind: pypy
- python-version: '3.11'
python-architecture: x64
runs-on: ubuntu-latest
dependencies-kind: numpy2
- python-version: '3.11'
python-architecture: x64
runs-on: macos-11
dependencies-kind: numpy2
- python-version: '3.11'
python-architecture: x64
runs-on: windows-latest
dependencies-kind: numpy2
runs-on: ${{ matrix.runs-on }}
env:
PIP_ONLY_BINARY: numpy,pandas,pyarrow,numexpr,numexpr
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: 'Python ${{ matrix.python-version }}'
uses: actions/setup-python@v5
with:
python-version: '${{ matrix.python-version }}'
architecture: '${{ matrix.python-architecture }}'
allow-prereleases: true
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures --tests
- name: Cache awkward-cpp wheel
id: cache-awkward-cpp-wheel
uses: actions/cache@v4
with:
path: awkward-cpp/dist
key: ${{ github.job }}-${{ matrix.runs-on }}-${{ matrix.python-version }}-${{ matrix.python-architecture }}-${{ hashFiles('awkward-cpp/**') }}
- name: Build awkward-cpp wheel
if: steps.cache-awkward-cpp-wheel.outputs.cache-hit != 'true'
run: |
python -m pip install build
python -m build -w awkward-cpp
- name: Find built wheel
uses: tj-actions/glob@v22
id: find-wheel
with:
files: |
awkward-cpp/dist/*.whl
- name: Install awkward, awkward-cpp, and dependencies
run: >-
python -m pip install -v . ${{ steps.find-wheel.outputs.paths }} pytest-github-actions-annotate-failures
-r "requirements-test-${{ matrix.dependencies-kind }}.txt"
- name: Print versions
run: python -m pip list
- name: Check if kernel specification is sorted
# We don't need to run this all the time
if: (matrix.python-version == '3.12') && (matrix.runs-on == 'ubuntu-latest')
run: pipx run nox -s diagnostics -- --check-spec-sorted
- name: Test specification
run: python -m pytest -vv -rs awkward-cpp/tests-spec
- name: Test specification with explicitly defined values
run: python -m pytest -vv -rs awkward-cpp/tests-spec-explicit
- name: Test CPU kernels
run: python -m pytest -vv -rs awkward-cpp/tests-cpu-kernels
- name: Test CPU kernels with explicitly defined values
run: python -m pytest -vv -rs awkward-cpp/tests-cpu-kernels-explicit
- name: Test non-kernels (Python)
run: >-
python -m pytest -vv -rs tests --cov=awkward --cov-report=term
--cov-report=xml
if: startsWith(matrix.python-version, '3.')
- name: Test non-kernels (PyPy)
run: >-
python -m pytest -vv -rs tests
if: startsWith(matrix.python-version, 'pypy')
- name: Upload Codecov results
if: (matrix.python-version == '3.9') && (matrix.runs-on == 'ubuntu-latest')
uses: codecov/codecov-action@v4
Linux-ROOT:
runs-on: ubuntu-20.04
env:
PIP_ONLY_BINARY: numpy,pandas,pyarrow,numexpr,numexpr
timeout-minutes: 30
# Required for miniconda to activate conda
defaults:
run:
shell: "bash -l {0}"
steps:
- uses: "actions/checkout@v4"
with:
submodules: true
- name: Setup Python via Conda
uses: mamba-org/setup-micromamba@v1
with:
# Cache invalidates daily by default
cache-environment: true
environment-name: awkward
# Need Python 3.8 for the cached wheels
create-args: >-
python=3.8
numpy
root
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures --tests
- name: Cache awkward-cpp wheel
id: cache-awkward-cpp-wheel
uses: actions/cache@v4
with:
path: ./awkward-cpp/dist
key: ${{ github.job }}-${{ hashFiles('awkward-cpp/**') }}
- name: Build awkward-cpp wheel
if: steps.cache-awkward-cpp-wheel.outputs.cache-hit != 'true'
run: |
python3 -m pip install build
python3 -m build -w ./awkward-cpp
- name: Install awkward, awkward-cpp, and dependencies
run: >-
python -m pip install --only-binary "numpy,pandas,pyarrow,numexpr"
-v . ./awkward-cpp/dist/*.whl
pytest-github-actions-annotate-failures
-r requirements-test-full.txt
- name: Print versions
run: python -m pip list
- name: Test
run: python -m pytest -vv -rs tests
Linux-cppyy:
# TODO: remove this part of the workflow
# cppyy is not yet released. Let's load some pre-built wheels via docker (as a binary store)
runs-on: ubuntu-22.04
env:
PIP_ONLY_BINARY: numpy,pandas,pyarrow,numexpr,numexpr
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: 'Python ${{ matrix.python-version }}'
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Generate build files
run: pipx run nox -s prepare -- --headers --signatures --tests
- name: Cache awkward-cpp wheel
id: cache-awkward-cpp-wheel
uses: actions/cache@v4
with:
path: ./awkward-cpp/dist
key: ${{ github.job }}-${{ hashFiles('awkward-cpp/**') }}
- name: Build awkward-cpp wheel
if: steps.cache-awkward-cpp-wheel.outputs.cache-hit != 'true'
run: |
python -m pip install build
python -m build -w ./awkward-cpp
- name: Extract pre-built manylinux cppyy wheels
uses: shrink/actions-docker-extract@v3
with:
image: "docker.io/agoose77/cppyy-wheels:cp311"
path: "/wheels/."
destination: "/tmp/wheelhouse"
- name: Install awkward, awkward-cpp, and dependencies
run: >-
python -m pip install -v --only-binary "numpy,pandas,pyarrow,numexpr"
./ ./awkward-cpp/dist/*.whl /tmp/wheelhouse/* pytest-github-actions-annotate-failures
- name: Print versions
run: python -m pip list
- name: Test
run: python -m pytest -vv -rs tests -k cppyy
awkward-2.6.5/.github/workflows/upload-nightly-wheels.yml 0000664 0000000 0000000 00000004541 14625435530 0023544 0 ustar 00root root 0000000 0000000 name: Upload nightly wheels to Anaconda Cloud
on:
# Run daily at 2:34 UTC to upload nightly wheels to Anaconda Cloud
schedule:
- cron: '34 2 * * *'
# Run on demand with workflow dispatch
workflow_dispatch:
permissions:
actions: read
jobs:
upload_nightly_wheels:
name: Upload nightly wheels to Anaconda Cloud
runs-on: ubuntu-latest
defaults:
run:
# The login shell is necessary for the setup-micromamba setup
# to work in subsequent jobs.
# https://github.com/mamba-org/setup-micromamba#about-login-shells
shell: bash -e -l {0}
if: github.repository_owner == 'scikit-hep'
steps:
# https://github.com/actions/download-artifact/issues/3#issuecomment-1017141067
- name: Download wheel artifacts from last build on 'main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PROJECT_REPO="scikit-hep/awkward"
BRANCH="main"
WORKFLOW_NAME="build-wheels.yml"
ARTIFACT_PATTERN="awkward*wheel*" # awkward-wheel and awkward-cpp-wheels-*
gh run --repo "${PROJECT_REPO}" \
list --branch "${BRANCH}" \
--workflow "${WORKFLOW_NAME}" \
--json event,status,conclusion,databaseId > runs.json
RUN_ID=$(
jq --compact-output \
'[
.[] |
# Filter on "schedule" and "workflow_dispatch" events to main (nightly build) ...
select(.event == "schedule" or .event == "workflow_dispatch") |
# that have completed successfully ...
select(.status == "completed" and .conclusion == "success")
] |
# and get ID of latest build of wheels.
sort_by(.databaseId) | reverse | .[0].databaseId' runs.json
)
gh run --repo "${PROJECT_REPO}" view "${RUN_ID}"
gh run --repo "${PROJECT_REPO}" \
download "${RUN_ID}" --pattern "${ARTIFACT_PATTERN}"
mkdir dist
mv ${ARTIFACT_PATTERN}/*.whl dist/
ls -l dist/
- name: Upload wheels to Anaconda Cloud as nightlies
uses: scientific-python/upload-nightly-action@b67d7fcc0396e1128a474d1ab2b48aa94680f9fc # 0.5.0
with:
artifacts_path: dist
anaconda_nightly_upload_token: ${{ secrets.ANACONDA_ORG_UPLOAD_TOKEN }}
awkward-2.6.5/.gitignore 0000664 0000000 0000000 00000004474 14625435530 0015174 0 ustar 00root root 0000000 0000000 studies/**/sample-*
docs/demos/countries.geojson
docs/demos/test-program
docs/demos/test-program.cpp
.clangd/
# Generated files
src/awkward/_connect/cuda/_kernel_signatures.py
src/awkward/_connect/header-only
src/awkward/_version.py
# Kernel tests
awkward-cpp/tests-cpu-kernels
awkward-cpp/tests-cpu-kernels-explicit
awkward-cpp/tests-spec
awkward-cpp/tests-spec-explicit
tests-cuda-kernels
tests-cuda-kernels-explicit
# to use all-contributors-cli without adding it to the project
node_modules
package.json
yarn.lock
array*.parquet
############################################################# Sphinx & Doxygen
docs/_build
docs/reference/generated
# Jupyter Book
docs/.jupyter_cache
docs/jupyter_execute
docs/environment.yml
# Pyodide / JupyterLite
docs/lite/
docs/_contents/
**/.pyodide-xbuildenv
docs/_static/doxygen
############################################################# IDEs
.idea
cmake-build-debug
GTAGS
GPATH
GRTAGS
.vscode
pyrightconfig.json
# ...
############################################################# LaTeX
*.aux
*.log
_minted-*
############################################################# Python
**/.mypy_cache
# Byte-compiled / optimized / DLL files
__pycache__
*.py[cod]
*$py.class
# Distribution / packaging
_skbuild/
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
cuda-kernels/include
cuda-kernels/src
cuda-kernels/VERSION_INFO
# Virtual Environment folder is not needed
venv
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.nox/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Jupyter Notebook
.ipynb_checkpoints
############################################################# C and C++
# ctest
Testing/
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# Python environments
/.env/*
# Pip stuff
/pip-wheel-metadata/*
/_skbuild/*
awkward-2.6.5/.gitmodules 0000664 0000000 0000000 00000000146 14625435530 0015351 0 ustar 00root root 0000000 0000000 [submodule "rapidjson"]
path = awkward-cpp/rapidjson
url = https://github.com/Tencent/rapidjson.git
awkward-2.6.5/.pre-commit-config.yaml 0000664 0000000 0000000 00000003674 14625435530 0017466 0 ustar 00root root 0000000 0000000 ci:
autoupdate_commit_msg: "chore: update pre-commit hooks"
autofix_commit_msg: "style: pre-commit fixes"
exclude: ^(docs|studies|tests/samples|src/awkward/_typeparser/generated_parser.py)
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-merge-conflict
- id: check-symlinks
- id: check-yaml
- id: end-of-file-fixer
exclude_types: [svg]
- id: mixed-line-ending
- id: requirements-txt-fixer
- id: trailing-whitespace
- id: name-tests-test
args: ["--pytest-test-first"]
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
additional_dependencies: [pyyaml]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.5
hooks:
- id: ruff
args: ["--fix", "--show-fixes"]
- id: ruff-format
- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
hooks:
- id: codespell
args: ["-L", "ue,subjet,parms,fo,numer,thre,nin,nout"]
- repo: local
hooks:
- id: disallow-caps
name: disallow improper capitalization
language: pygrep
entry: PyBind|Cmake|CCache|Github|PyTest
exclude: .pre-commit-config.yaml
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: "v0.10.0.1"
hooks:
- id: shellcheck
- repo: local
hooks:
- id: require-test-name-identifier
name: require identifiers for test names
language: python
entry: python dev/validate-test-names.py
types: [file, python]
files: ^tests/
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.28.4
hooks:
- id: check-github-workflows
args: ["--verbose"]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.10.0
hooks:
- id: mypy
files: src
additional_dependencies:
- numpy>=1.24
- repo: https://github.com/abravalheri/validate-pyproject
rev: v0.18
hooks:
- id: validate-pyproject
awkward-2.6.5/.readthedocs.yml 0000664 0000000 0000000 00000000374 14625435530 0016265 0 ustar 00root root 0000000 0000000 version: 2
build:
os: "ubuntu-22.04"
tools:
python: "3.10"
commands:
- mkdir --parents _readthedocs/html/
- python3 dev/generate-redirects.py docs/redirects.json _readthedocs/html/
- cp dev/robots.txt _readthedocs/html/robots.txt
awkward-2.6.5/CITATION.cff 0000664 0000000 0000000 00000003541 14625435530 0015070 0 ustar 00root root 0000000 0000000 cff-version: 1.2.0
title: "Awkward Array"
message: "If you use this software, please cite it as below."
doi: "10.5281/zenodo.4341376"
date-released: "2018-10-12"
authors:
- family-names: "Pivarski"
given-names: "Jim"
affiliation: "Princeton University"
orcid: "https://orcid.org/0000-0002-6649-343X"
email: "pivarski@princeton.edu"
- family-names: "Osborne"
given-names: "Ianna"
affiliation: "Princeton University"
orcid: "https://orcid.org/0000-0002-6955-1033"
email: "iosborne@princeton.edu"
- family-names: "Ifrim"
given-names: "Ioana"
affiliation: "Princeton University"
orcid: "https://orcid.org/0000-0002-6932-1385"
email: "ii3193@princeton.edu"
- family-names: "Schreiner"
given-names: "Henry"
affiliation: "Princeton University"
orcid: "https://orcid.org/0000-0002-7833-783X"
email: "henryfs@princeton.edu"
- family-names: "Hollands"
given-names: "Angus"
affiliation: "Princeton University"
orcid: "https://orcid.org/0000-0003-0788-3814"
email: "goosey15@gmail.com"
- family-names: "Biswas"
given-names: "Anish"
affiliation: "Manipal Institute Of Technology"
orcid: "https://orcid.org/0000-0001-6149-9739"
email: "anishbiswas271@gmail.com"
- family-names: "Das"
given-names: "Pratyush"
affiliation: "Purdue University"
orcid: "https://orcid.org/0000-0001-8140-0097"
email: "reikdas@gmail.com"
- family-names: "Roy Choudhury"
given-names: "Santam"
affiliation: "National Institute of Technology, Durgapur"
orcid: "https://orcid.org/0000-0003-0153-9748"
email: "santamdev404@gmail.com"
- family-names: "Smith"
given-names: "Nicholas"
affiliation: "Fermilab"
orcid: "https://orcid.org/0000-0002-0324-3054"
email: "nick.smith@cern.ch"
- family-names: "Goyal"
given-names: "Manasvi"
affiliation: "Delhi Technological University"
orcid: "https://orcid.org/0000-0001-6321-7491"
email: "mg.manasvi@gmail.com"
awkward-2.6.5/CONTRIBUTING.md 0000664 0000000 0000000 00000035654 14625435530 0015441 0 ustar 00root root 0000000 0000000 # Contributing to Awkward Array
[](https://github.com/scikit-hep/awkward/actions/workflows/needs-cpp-release.yml)
Thank you for your interest in contributing! We're eager to see your ideas and look forward to working with you.
This document describes the technical procedures we follow in this project. It should also be stressed that as members of the Scikit-HEP community, we are all obliged to maintaining a welcoming, harassment-free environment. See the [Code of Conduct](https://scikit-hep.org/code-of-conduct) for details.
### Where to start
The front page for the Awkward Array project is its [GitHub README](https://github.com/scikit-hep/awkward#readme). This leads directly to tutorials and reference documentation that you may have already seen. It also includes instructions for [compiling for development](https://github.com/scikit-hep/awkward#installation-for-developers).
### Reporting issues
The first thing you should do if you want to fix something is to [submit an issue through GitHub](https://github.com/scikit-hep/awkward/issues). That way, we can all see it and maybe one of us or a member of the community knows of a solution that could save you the time spent fixing it. If you "assign yourself" to the issue (top of right side-bar), you can signal your intent to fix it in the issue report.
### Contributing a pull request
Feel free to [open pull requests in GitHub](https://github.com/scikit-hep/awkward/pulls) from your [forked repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) when you start working on the problem. We recommend opening the pull request early so that we can see your progress and communicate about it. (Note that you can `git commit --allow-empty` to make an empty commit and start a pull request before you even have new code.)
Please [make the pull request a draft](https://github.blog/2019-02-14-introducing-draft-pull-requests/) to indicate that it is in an incomplete state and shouldn't be merged until you click "ready for review."
### Getting your pull request reviewed
Currently, we have two regular reviewers of pull requests:
* Jim Pivarski ([jpivarski](https://github.com/jpivarski))
* Topher Cawlfield ([tcawlfield](https://github.com/tcawlfield))
You can request a review from one of us or just comment in GitHub that you want a review and we'll see it. Only one review is required to be allowed to merge a pull request. We'll work with you to get it into shape.
If you're waiting for a response and haven't heard in a few days, it's possible that we forgot/got distracted/thought someone else was reviewing it/thought we were waiting on you, rather than you waiting on us—just write another comment to remind us.
### Becoming a regular committer
If you want to contribute frequently, we'll grant you write access to the `scikit-hep/awkward` repo itself. This is more convenient than pull requests from forked repos.
### Git practices
Unless you ask us not to, we might commit directly to your pull request as a way of communicating what needs to be changed. That said, most of the commits on a pull request are from a single author: corrections and suggestions are exceptions.
Therefore, we prefer git branches to be named with your GitHub userid, such as `jpivarski/write-contributing-md`.
The titles of pull requests (and therefore the merge commit messages) should follow [these conventions](https://www.conventionalcommits.org/en/v1.0.0/#summary). Mostly, this means prefixing the title with one of these words and a colon:
* feat: new feature
* fix: bug-fix
* perf: code change that improves performance
* refactor: code change that neither fixes a bug nor adds a feature
* style: changes that do not affect the meaning of the code
* test: adding missing tests or correcting existing tests
* build: changes that affect the build system or external dependencies
* docs: documentation only changes
* ci: changes to our CI configuration files and scripts
* chore: other changes that don't modify src or test files
* revert: reverts a previous commit
Almost all pull requests are merged with the "squash and merge" feature, so details about commit history within a pull request are hidden from the `main` branch's history. Feel free, therefore, to commit with any frequency you're comfortable with.
It is unnecessary to manually edit (rebase) commit history within a pull request.
### Building and testing locally
The [installation for developers](README.md#installation-for-developers) procedure is described in brief on the front page, and in more detail here.
Awkward Array is shipped as two packages: `awkward` and `awkward-cpp`. The `awkward-cpp` package contains the compiled C++ components required for performance, and `awkward` is only Python code. If you do not need to modify any C++ (the usual case), then `awkward-cpp` can simply be installed using `pip` or `conda`.
Subsequent steps require the generation of code and datafiles (kernel specification, header-only includes). This can be done with the `prepare` [nox](https://nox.thea.codes/) session:
```bash
nox -s prepare
```