Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ celerybeat.pid

# Environments
.env
.venv
.venv*
env/
venv/
ENV/
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ repos:
hooks:
- id: mypy
files: src
additional_dependencies: [rich>=12, click>=8.1.1, hist, numpy, textual==0.1.17]
additional_dependencies: [rich>=12, click>=8.1.1, hist, numpy, textual>0.13]

- repo: https://github.com/codespell-project/codespell
rev: v2.2.4
Expand Down
120 changes: 60 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,66 +103,66 @@ uproot-browser tree ../scikit-hep-testdata/src/skhep_testdata/data/uproot-Event.
📁 uproot-Event.root
┣━━ ❓ <unnamed> TProcessID
┣━━ 🌴 T (1000)
━━ 🍁 event Event
┃ ┣━━ 🍁 TObject (group of fUniqueID:uint32_t, fBits:uint8_t)
┃ ┣━━ 🍁 fBits uint8_t
━━ 🍁 fUniqueID uint32_t
┃ ┣━━ 🍁 fClosestDistance unknown[]
┃ ┣━━ 🍁 fEventName char*
┃ ┣━━ 🍁 fEvtHdr EventHeader
┃ ┣━━ 🍁 fEvtHdr.fDate int32_t
┃ ┣━━ 🍁 fEvtHdr.fEvtNum int32_t
━━ 🍁 fEvtHdr.fRun int32_t
┃ ┣━━ 🍁 fFlag uint32_t
┃ ┣━━ 🍁 fH TH1F
┃ ┣━━ 🍁 fHighPt TRefArray*
┃ ┣━━ 🍁 fIsValid bool
┃ ┣━━ 🍁 fLastTrack TRef
┃ ┣━━ 🍁 fMatrix[4][4] float[4][4]
┃ ┣━━ 🍁 fMeasures[10] int32_t[10]
┃ ┣━━ 🍁 fMuons TRefArray*
┃ ┣━━ 🍁 fNseg int32_t
┃ ┣━━ 🍁 fNtrack int32_t
┃ ┣━━ 🍁 fNvertex uint32_t
┃ ┣━━ 🍁 fTemperature float
┃ ┣━━ 🍁 fTracks TClonesArray*
┃ ┣━━ 🍃 fTracks.fBits uint8_t[]
┃ ┣━━ 🍃 fTracks.fBx Float16_t[]
┃ ┣━━ 🍃 fTracks.fBy Float16_t[]
┃ ┣━━ 🍃 fTracks.fCharge Double32_t[]
┃ ┣━━ 🍃 fTracks.fMass2 Float16_t[]
┃ ┣━━ 🍃 fTracks.fMeanCharge float[]
┃ ┣━━ 🍃 fTracks.fNpoint int32_t[]
┃ ┣━━ 🍃 fTracks.fNsp uint32_t[]
┃ ┣━━ 🍁 fTracks.fPointValue unknown[][]
┃ ┣━━ 🍃 fTracks.fPx float[]
┃ ┣━━ 🍃 fTracks.fPy float[]
┃ ┣━━ 🍃 fTracks.fPz float[]
┃ ┣━━ 🍃 fTracks.fRandom float[]
┃ ┣━━ 🍃 fTracks.fTArray[3] float[][3]
┃ ┣━━ 🍁 fTracks.fTriggerBits.fAllBits uint8_t[][]
┃ ┣━━ 🍃 fTracks.fTriggerBits.fBits uint8_t[]
┃ ┣━━ 🍃 fTracks.fTriggerBits.fNbits uint32_t[]
┃ ┣━━ 🍃 fTracks.fTriggerBits.fNbytes uint32_t[]
┃ ┣━━ 🍃 fTracks.fTriggerBits.fUniqueID uint32_t[]
┃ ┣━━ 🍃 fTracks.fUniqueID uint32_t[]
┃ ┣━━ 🍃 fTracks.fValid int16_t[]
┃ ┣━━ 🍃 fTracks.fVertex[3] Double32_t[][3]
┃ ┣━━ 🍃 fTracks.fXfirst Float16_t[]
┃ ┣━━ 🍃 fTracks.fXlast Float16_t[]
┃ ┣━━ 🍃 fTracks.fYfirst Float16_t[]
┃ ┣━━ 🍃 fTracks.fYlast Float16_t[]
┃ ┣━━ 🍃 fTracks.fZfirst Float16_t[]
━━ 🍃 fTracks.fZlast Float16_t[]
┃ ┣━━ 🍁 fTriggerBits TBits
┃ ┣━━ 🍁 fTriggerBits.TObject (group of fTriggerBits.fUniqueID:uint32_t, fTriggerBits.fBits:uint8_t)
┃ ┣━━ 🍁 fTriggerBits.fBits uint8_t
━━ 🍁 fTriggerBits.fUniqueID uint32_t
┃ ┣━━ 🍃 fTriggerBits.fAllBits uint8_t[]
┃ ┣━━ 🍁 fTriggerBits.fNbits uint32_t
━━ 🍁 fTriggerBits.fNbytes uint32_t
┃ ┣━━ 🍁 fType[20] int8_t[20]
┃ ┗━━ 🍁 fWebHistogram TRef
━━ 🌿 event Event
┣━━ 🌿 TObject (group of fUniqueID:uint32_t, fBits:uint32_t)
┣━━ 🍁 fBits uint32_t
┃ ┗━━ 🍁 fUniqueID uint32_t
┣━━ 🍁 fClosestDistance unknown[]
┣━━ 🍁 fEventName char*
┣━━ 🌿 fEvtHdr EventHeader
┣━━ 🍁 fEvtHdr.fDate int32_t
┣━━ 🍁 fEvtHdr.fEvtNum int32_t
┃ ┗━━ 🍁 fEvtHdr.fRun int32_t
┣━━ 🍁 fFlag uint32_t
┣━━ 🍁 fH TH1F
┣━━ 🍁 fHighPt TRefArray*
┣━━ 🍁 fIsValid bool
┣━━ 🍁 fLastTrack TRef
┣━━ 🍁 fMatrix[4][4] float[4][4]
┣━━ 🍁 fMeasures[10] int32_t[10]
┣━━ 🍁 fMuons TRefArray*
┣━━ 🍁 fNseg int32_t
┣━━ 🍁 fNtrack int32_t
┣━━ 🍁 fNvertex uint32_t
┣━━ 🍁 fTemperature float
┣━━ 🌿 fTracks TClonesArray*
┣━━ 🍃 fTracks.fBits uint32_t[]
┣━━ 🍃 fTracks.fBx Float16_t[]
┣━━ 🍃 fTracks.fBy Float16_t[]
┣━━ 🍃 fTracks.fCharge Double32_t[]
┣━━ 🍃 fTracks.fMass2 Float16_t[]
┣━━ 🍃 fTracks.fMeanCharge float[]
┣━━ 🍃 fTracks.fNpoint int32_t[]
┣━━ 🍃 fTracks.fNsp uint32_t[]
┣━━ 🍁 fTracks.fPointValue unknown[][]
┣━━ 🍃 fTracks.fPx float[]
┣━━ 🍃 fTracks.fPy float[]
┣━━ 🍃 fTracks.fPz float[]
┣━━ 🍃 fTracks.fRandom float[]
┣━━ 🍃 fTracks.fTArray[3] float[][3]
┣━━ 🍁 fTracks.fTriggerBits.fAllBits uint8_t[][]
┣━━ 🍃 fTracks.fTriggerBits.fBits uint32_t[]
┣━━ 🍃 fTracks.fTriggerBits.fNbits uint32_t[]
┣━━ 🍃 fTracks.fTriggerBits.fNbytes uint32_t[]
┣━━ 🍃 fTracks.fTriggerBits.fUniqueID uint32_t[]
┣━━ 🍃 fTracks.fUniqueID uint32_t[]
┣━━ 🍃 fTracks.fValid int16_t[]
┣━━ 🍃 fTracks.fVertex[3] Double32_t[][3]
┣━━ 🍃 fTracks.fXfirst Float16_t[]
┣━━ 🍃 fTracks.fXlast Float16_t[]
┣━━ 🍃 fTracks.fYfirst Float16_t[]
┣━━ 🍃 fTracks.fYlast Float16_t[]
┣━━ 🍃 fTracks.fZfirst Float16_t[]
┃ ┗━━ 🍃 fTracks.fZlast Float16_t[]
┣━━ 🌿 fTriggerBits TBits
┣━━ 🌿 fTriggerBits.TObject (group of fTriggerBits.fUniqueID:uint32_t, fTriggerBits.fBits:uint32_t)
┃ ┃ ┣━━ 🍁 fTriggerBits.fBits uint32_t
┃ ┃ ┗━━ 🍁 fTriggerBits.fUniqueID uint32_t
┣━━ 🍃 fTriggerBits.fAllBits uint8_t[]
┣━━ 🍁 fTriggerBits.fNbits uint32_t
┃ ┗━━ 🍁 fTriggerBits.fNbytes uint32_t
┣━━ 🍁 fType[20] int8_t[20]
┗━━ 🍁 fWebHistogram TRef
┣━━ 📊 hstat TH1F (100)
┗━━ 📊 htime TH1F (10)
```
Expand Down
5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ dependencies = [
"uproot >=4.2.1",
"plotext >=5.2.2",
"hist >=2.4",
"textual >=0.1.17,<0.2.0",
"textual >=0.13.0",
]

[project.optional-dependencies]
Expand Down Expand Up @@ -116,7 +116,8 @@ messages_control.disable = [
"missing-function-docstring",
"missing-module-docstring",
"duplicate-code",
"unused-argument", # Handed by Ruff
"unused-argument", # Handled by Ruff
"wrong-import-position", # Handled by Ruff
]

[tool.ruff]
Expand Down
27 changes: 7 additions & 20 deletions src/uproot_browser/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@

from __future__ import annotations

import asyncio
import functools
import os
from pathlib import Path
from typing import Any, Callable

import click
import rich
import uproot

from ._version import version as __version__
Expand Down Expand Up @@ -97,31 +95,20 @@ def plot(filename: str, iterm: bool) -> None:

@main.command()
@click.argument("filename")
@click.option(
"--logging", is_flag=True, help="Write log information to the textual.log file."
)
def browse(filename: str, logging: bool) -> None:
def browse(filename: str) -> None:
"""
Display a TUI.
"""
import uproot_browser.tui # pylint: disable=import-outside-toplevel
import uproot_browser.dirs # pylint: disable=import-outside-toplevel
import uproot_browser.tui.browser # pylint: disable=import-outside-toplevel

fname = uproot_browser.dirs.filename(filename)

# Run the uproot-browser TUI
async def amain() -> list[Any]:
app = uproot_browser.tui.Browser(
title="uproot-browser",
path=Path(fname),
log="textual.log" if logging else None,
)
await app.process_messages()
return app.results

results = asyncio.run(amain())
app = uproot_browser.tui.browser.Browser(
path=Path(fname),
)

for result in results:
rich.print(result)
app.run()


if __name__ == "__main__":
Expand Down
4 changes: 2 additions & 2 deletions src/uproot_browser/dirs.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ def selections(select: str) -> tuple[str, ...]:
return tuple(select.split(":")[1:])


def apply_selection(tree: Any, select: Iterable[str]) -> Iterable[Any]:
def apply_selection(tree: Any, selection: Iterable[str]) -> Iterable[Any]:
"""
Apply a colon-separated selection to an uproot tree. Slashes are handled by uproot.
"""
for sel in select:
for sel in selection:
tree = tree[sel]
yield tree
65 changes: 0 additions & 65 deletions src/uproot_browser/footer.py

This file was deleted.

86 changes: 0 additions & 86 deletions src/uproot_browser/header.py

This file was deleted.

Loading