Thin wrapper of [luigi](https://github.com/spotify/luigi) for utility.
# Features
## Formatted local targets
Classes inheriting `daisy.FormattedLocalTargetBase` is provided
for dumping and loading objects by one-liner.
``` python
import daisy
import pandas as pd
df = pd.DataFrame({"a": [1,2,3], "b": [4,5,6]})
df
# =>
# a b
# 0 1 4
# 1 2 5
# 2 3 6
targ = daisy.CsvTarget("./output.csv")
# dumping
targ.dump(df)
# loading
df2 = targ.load()
df2
# =>
# a b
# 0 1 4
# 1 2 5
# 2 3 6
# `daisy.FormattedLocalTargetBase` also inherits `luigi.LocalTaget`
# so that original api is also enabled.
with targ.open("r") as fd:
s = fd.read()
```
## Default output for task
`daisy.Task` inherits `luigi.Task` and provides default `output` features.
By setting file extension via `ext` attribute,
daisy automatically configure corresponding `FormattedLocalTarget` with default file name.
### Single output
``` python
class TaskA(daisy.Task):
param1 = daisy.Parameter()
ext = "csv"
```
is equivalent to:
``` python
class TaskA(luigi.Task):
param1 = luigi.Parameter()
def output(self):
return daisy.CsvTarget("./data/TaskA/TaskA(param1={}).csv".format(self.param1))
```
### Multiple outputs
``` python
class TaskA(daisy.Task):
param1 = daisy.Parameter()
ext = {
"vectors": "npy",
"metadata": "json"
}
```
is equivalent to:
``` python
class TaskA(luigi.Task):
param1 = luigi.Parameter()
def output(self):
return {
"vectors": daisy.NpyTarget("./data/TaskA/TaskA(param1={}).npy".format(self.param1)),
"metadata": daisy.JsonTarget("./data/TaskA/TaskA(param1={}).json".format(self.param1))
}
```
Available extension and file types are as follows:
| Target class | Object type | extension |
| --- | --- | --- |
| `CsvTarget` | `pandas.DataFrame` | `csv` |
| `NpyTarget` | `numpy.ndarray` | `npy` |
| `JsonTarget` | `dict` | `json` |
| `PickleTarget` | `object` | `pkl` `pickle` |
| `FeatherTarget` | `pandas.DataFrame` | `feather` |
view [source code](./daisy/formatted_target.py) for detail.
## Configuration
For configuration, edit `[daisy]` section of `luigi.cfg`.
``` INI
[daisy]
# default output directory
data_dir = luigi.Parameter("./data")
```
Metadata
Release files for luigi-daisy 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| luigi-daisy-0.0.3.tar.gz | 4.0 kB | Without provenance | Details for luigi-daisy-0.0.3.tar.gz |
Release files / luigi-daisy-0.0.3.tar.gz
| Download URL | luigi-daisy-0.0.3.tar.gz |
|---|---|
| Size | 4.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b01e0d6a81f6a6952a4f702e206573066b95bd1dcdaca6af7fe7dd03f165277f
|
|
BLAKE2b-256 checksum How to use checksums |
0145d67645f4ffcb2d73acd8c6b0e54b31dfd1ca957a0d7b33562ec7c17c8d65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Python-urllib/3.6
|
Security for luigi-daisy 0.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.