Documentation ¶
Overview ¶
Package dsfs glues datsets to cafs (content-addressed-file-system)
Index ¶
- Constants
- Variables
- func CreateDataset(ctx context.Context, source qfs.Filesystem, destination qfs.Filesystem, ...) (string, error)
- func DerefCommit(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefDataset(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefMeta(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefReadme(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefStats(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefStructure(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefTransform(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func DerefViz(ctx context.Context, store qfs.Filesystem, ds *dataset.Dataset) error
- func GetHashBase(in string) string
- func JSONFile(name string, m json.Marshaler) (qfs.File, error)
- func LoadBody(ctx context.Context, fs qfs.Filesystem, ds *dataset.Dataset) (qfs.File, error)
- func LoadDataset(ctx context.Context, store qfs.Filesystem, path string) (*dataset.Dataset, error)
- func LoadDatasetRefs(ctx context.Context, fs qfs.Filesystem, path string) (*dataset.Dataset, error)
- func LoadReadmeScript(ctx context.Context, fs qfs.Filesystem, dspath string) (qfs.File, error)
- func LoadTransformScript(ctx context.Context, fs qfs.Filesystem, dspath string) (qfs.File, error)
- func PackageFilepath(fs qfs.Filesystem, path string, pf PackageFile) string
- func WriteDataset(ctx context.Context, dsLk *sync.Mutex, destination qfs.Filesystem, ...) (string, error)
- type BodyAction
- type PackageFile
- type SaveSwitches
Constants ¶
const ( // BodyDefault is the default action: compare them to get how much changed BodyDefault = BodyAction("default") // BodySame means that the bodies are the same, no need to compare BodySame = BodyAction("same") // BodyTooBig means the body is too big to directly compare, and should use // some other method BodyTooBig = BodyAction("too_big") )
Variables ¶
var ( // BodySizeSmallEnoughToDiff sets how small a body must be to generate a message from it BodySizeSmallEnoughToDiff = 20000000 // 20M or less is small // OpenFileTimeoutDuration determines the maximium amount of time to wait for // a Filestore to open a file. Some filestores (like IPFS) fallback to a // network request when it can't find a file locally. Setting a short timeout // prevents waiting for a slow network response, at the expense of leaving // files unresolved. // TODO (b5) - allow -1 duration as a sentinel value for no timeout OpenFileTimeoutDuration = time.Millisecond * 700 )
var ( // ErrNoChanges indicates a save failed because no values changed, and // force-saving was disabled ErrNoChanges = fmt.Errorf("no changes") // ErrNoReadme is the error for asking a dataset without a readme component // for readme info ErrNoReadme = fmt.Errorf("this dataset has no readme component") // ErrNoTransform is the error for asking a dataset without a tranform // component for transform info ErrNoTransform = fmt.Errorf("this dataset has no transform component") // ErrNoViz is the error for asking a dataset without a viz component for // viz info ErrNoViz = fmt.Errorf("this dataset has no viz component") // ErrStrictMode indicates a dataset failed validation when it is required to // pass (Structure.Strict == true) ErrStrictMode = fmt.Errorf("dataset body did not validate against schema in strict-mode") )
var Timestamp = func() time.Time { return time.Now().UTC() }
Timestamp is an function for getting commit timestamps timestamps MUST be stored in UTC time zone
Functions ¶
func CreateDataset ¶
func CreateDataset( ctx context.Context, source qfs.Filesystem, destination qfs.Filesystem, pub event.Publisher, ds *dataset.Dataset, prev *dataset.Dataset, pk crypto.PrivKey, sw SaveSwitches, ) (string, error)
CreateDataset places a dataset into the store. Store is where we're going to store the data Dataset to be saved Prev is the previous version or nil if there isn't one Pk is the private key for cryptographically signing Sw is switches that control how the save happens Returns the immutable path if no error
func DerefCommit ¶ added in v0.10.0
DerefCommit derferences a dataset's Commit element if required should be a no-op if ds.Structure is nil or isn't a reference
func DerefDataset ¶
DerefDataset attempts to fully dereference a dataset
func DerefMeta ¶ added in v0.10.0
DerefMeta derferences a dataset's transform element if required should be a no-op if ds.Structure is nil or isn't a reference
func DerefReadme ¶ added in v0.10.0
DerefReadme dereferences a dataset's Readme element if required no-op if ds.Readme is nil or isn't a reference
func DerefStats ¶ added in v0.10.0
DerefStats derferences a dataset's stats component if required no-op if ds.Stats is nil or isn't a reference
func DerefStructure ¶ added in v0.10.0
DerefStructure derferences a dataset's structure element if required should be a no-op if ds.Structure is nil or isn't a reference
func DerefTransform ¶ added in v0.10.0
DerefTransform derferences a dataset's transform element if required should be a no-op if ds.Structure is nil or isn't a reference
func DerefViz ¶ added in v0.10.0
DerefViz dereferences a dataset's Viz element if required no-op if ds.Viz is nil or isn't a reference
func GetHashBase ¶
GetHashBase strips paths to return just the hash
func LoadDataset ¶
LoadDataset reads a dataset from a cafs and dereferences structure, transform, and commitMsg if they exist, returning a fully-hydrated dataset
func LoadDatasetRefs ¶
LoadDatasetRefs reads a dataset from a content addressed filesystem without dereferencing it's components
func LoadReadmeScript ¶
LoadReadmeScript loads script data from a dataset path if the given dataset has a readme script is specified the returned qfs.File will be the value of dataset.Readme.ScriptPath
func LoadTransformScript ¶
LoadTransformScript loads transform script data from a dataset path if the given dataset has a transform script specified the returned qfs.File will be the value of dataset.Transform.ScriptPath TODO - this is broken, assumes file is JSON. fix & test or depricate
func PackageFilepath ¶
func PackageFilepath(fs qfs.Filesystem, path string, pf PackageFile) string
PackageFilepath returns the path to a package file for a given base path It relies relies on package storage conventions and qfs.Filesystem path prefixes If you supply a path that does not match the filestore's naming conventions will return an invalid path
Types ¶
type BodyAction ¶ added in v0.9.7
type BodyAction string
BodyAction represents the action that should be taken to understand how the body changed
type PackageFile ¶
type PackageFile int
PackageFile specifies the different types of files that are stored in a package
const ( // PackageFileUnknown is the default package file, which // should be erroneous, as there is no sensible default // for PackageFile PackageFileUnknown PackageFile = iota // PackageFileDataset is the main dataset.json file // that contains all dataset metadata, and is the only // required file to constitute a dataset PackageFileDataset // PackageFileStructure isolates this dataset's structure // in it's own file PackageFileStructure // PackageFileAbstract is the abstract verion of // structure PackageFileAbstract // PackageFileResources lists the resource datasets // that went into creating a dataset // TODO - I think this can be removed now that Transform exists PackageFileResources // PackageFileCommit isolates the user-entered // documentation of the changes to this dataset's history PackageFileCommit // PackageFileTransform isloates the concrete transform that // generated this dataset PackageFileTransform // PackageFileAbstractTransform is the abstract version of // the operation performed to create this dataset PackageFileAbstractTransform // PackageFileMeta encapsulates human-readable metadata PackageFileMeta // PackageFileViz isolates the data related to representing a dataset as a // visualization PackageFileViz // PackageFileVizScript is the viz template PackageFileVizScript // PackageFileRenderedViz is the rendered visualization of the dataset PackageFileRenderedViz // PackageFileReadme connects readme data to the dataset package PackageFileReadme // PackageFileReadmeScript is the raw readme of the dataset PackageFileReadmeScript // PackageFileRenderedReadme is the rendered readme of the dataset PackageFileRenderedReadme // PackageFileStats isolates the statistical metadata component PackageFileStats )
func (PackageFile) Filename ¶
func (p PackageFile) Filename() string
Filename gives the canonical filename for a PackageFile
func (PackageFile) String ¶
func (p PackageFile) String() string
String implements the io.Stringer interface for PackageFile
type SaveSwitches ¶ added in v0.9.8
type SaveSwitches struct { // Use a custom timestamp, defaults to time.Now if unset Time time.Time // Replace is whether the save is a full replacement or a set of patches to previous Replace bool // Pin is whether the dataset should be pinned Pin bool // ConvertFormatToPrev is whether the body should be converted to match the previous format ConvertFormatToPrev bool // ForceIfNoChanges is whether the save should be forced even if no changes are detected ForceIfNoChanges bool // ShouldRender is deprecated, controls whether viz should be rendered ShouldRender bool // NewName is whether a new dataset should be created, guaranteeing there's no previous version NewName bool // FileHint is a hint for what file is used for creating this dataset FileHint string // Drop is a string of components to remove before saving Drop string }
SaveSwitches represents options for saving a dataset
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package dstest defines an interface for reading test cases from static files leveraging directories of test dataset input files & expected output files
|
Package dstest defines an interface for reading test cases from static files leveraging directories of test dataset input files & expected output files |