copier

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 3, 2025 License: GPL-3.0 Imports: 26 Imported by: 1

Documentation

Overview

Package copier provides tools and utilities for copying and modifying GTFS feeds.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AfterValidator added in v0.8.1

type AfterValidator interface {
	AfterValidator(tt.Entity, *tt.EntityMap) error
}

AfterValidator is called for each fully validated entity before writing.

type AfterWrite added in v0.8.8

type AfterWrite interface {
	AfterWrite(string, tt.Entity, *tt.EntityMap) error
}

AfterWrite is called for after writing each entity.

type Copier

type Copier struct {

	// book keeping
	EntityMap *tt.EntityMap
	// contains filtered or unexported fields
}

Copier copies from Reader to Writer

func NewCopier

func NewCopier(ctx context.Context, reader adapters.Reader, writer adapters.Writer, opts Options) (*Copier, error)

NewCopier creates and initializes a new Copier.

func (*Copier) Copy

func (copier *Copier) Copy(ctx context.Context) (*Result, error)

Copy copies Base GTFS entities from the Reader to the Writer, returning the summary as a Result.

func (*Copier) CopyEntities added in v0.10.0

func (copier *Copier) CopyEntities(ents []tt.Entity) error

func (*Copier) CopyEntity

func (copier *Copier) CopyEntity(ent tt.Entity) error

CopyEntity performs validation and saves errors and warnings.

func (*Copier) Reader

func (copier *Copier) Reader() adapters.Reader

func (*Copier) Writer

func (copier *Copier) Writer() adapters.Writer

type ErrorHandler

type ErrorHandler interface {
	HandleEntityErrors(tt.Entity, []error, []error)
	HandleSourceErrors(string, []error, []error)
}

ErrorHandler is called on each source file and entity; errors can be nil

type ExpandFilter added in v0.11.0

type ExpandFilter interface {
	Expand(tt.Entity, *tt.EntityMap) ([]tt.Entity, bool, error)
}

type Extension added in v0.8.1

type Extension interface {
	Copy(adapters.EntityCopier) error
}

Extension is run after normal copying has completed.

type Filter added in v0.8.1

type Filter interface {
	Filter(tt.Entity, *tt.EntityMap) error
}

Filter is called before validation.

type Marker

type Marker interface {
	IsMarked(string, string) bool
	IsVisited(string, string) bool
}

Marker visits and marks entities.

type Options added in v0.8.0

type Options struct {
	// Batch size
	BatchSize int
	// Skip most validation filters
	NoValidators bool
	// Skip shape cache
	NoShapeCache bool
	// Attempt to save an entity that returns validation errors
	AllowEntityErrors    bool
	AllowReferenceErrors bool
	// Interpolate any missing StopTime values: ArrivalTime/DepartureTime/ShapeDistTraveled
	InterpolateStopTimes bool
	// Create a stop-to-stop Shape for Trips without a ShapeID.
	CreateMissingShapes bool
	// Create missing Calendar entries
	NormalizeServiceIDs bool
	// Normalize timezones, e.g. US/Pacific -> America/Los_Angeles
	NormalizeTimezones bool
	// Simplify Calendars that use mostly CalendarDates
	SimplifyCalendars bool
	// Convert extended route types to primitives
	UseBasicRouteTypes bool
	// Copy extra files (requires CSV input)
	CopyExtraFiles bool
	// Simplify shapes
	SimplifyShapes float64
	// Convert route network_id to networks.txt/route_networks.txt
	NormalizeNetworks bool
	// DeduplicateStopTimes
	DeduplicateJourneyPatterns bool
	// Error limit
	ErrorLimit int
	// Logging level
	Quiet bool
	// Default error handler
	ErrorHandler ErrorHandler
	// Entity selection strategy
	Marker Marker
	// Journey Pattern Key Function
	JourneyPatternKey func(*gtfs.Trip) string
	// Named extensions
	ExtensionDefs []string
	// contains filtered or unexported fields
}

Options defines the settable options for a Copier.

func (*Options) AddExtension added in v0.18.0

func (opts *Options) AddExtension(ext any)

func (*Options) AddExtensionWithLevel added in v1.0.0

func (opts *Options) AddExtensionWithLevel(e any, level int)

func (*Options) ParseExtensionDef added in v1.0.0

func (opts *Options) ParseExtensionDef(extDef string) (ext.Extension, error)

type Prepare added in v0.8.1

type Prepare interface {
	Prepare(adapters.Reader, *tt.EntityMap) error
}

Prepare is called before general copying begins.

type Result added in v0.8.0

type Result struct {
	InterpolatedStopTimeCount int
	EntityCount               map[string]int
	GeneratedCount            map[string]int
	SkipEntityErrorCount      map[string]int
	SkipEntityReferenceCount  map[string]int
	SkipEntityFilterCount     map[string]int
	SkipEntityMarkedCount     map[string]int
	Errors                    map[string]*ValidationErrorGroup
	Warnings                  map[string]*ValidationErrorGroup
	ErrorLimit                int
}

Result stores Copier results and statistics.

func Copy added in v0.18.0

func Copy(ctx context.Context, reader adapters.Reader, writer adapters.Writer, optfns ...func(*Options)) (*Result, error)

Copy with options builder

func CopyWithOptions added in v1.0.0

func CopyWithOptions(ctx context.Context, reader adapters.Reader, writer adapters.Writer, opts Options) (*Result, error)

func NewResult added in v0.8.0

func NewResult(errorLimit int) *Result

NewResult returns a new Result.

func QuietCopy added in v0.18.0

func QuietCopy(ctx context.Context, reader adapters.Reader, writer adapters.Writer, optfns ...func(*Options)) (*Result, error)

Quiet copy

func (*Result) DisplayErrors added in v0.8.0

func (cr *Result) DisplayErrors()

DisplayErrors shows individual errors in log.Info

func (*Result) DisplaySummary added in v0.8.0

func (cr *Result) DisplaySummary()

DisplaySummary shows entity and error counts in log.Info

func (*Result) DisplayWarnings added in v0.8.0

func (cr *Result) DisplayWarnings()

DisplayWarnings shows individual warnings in log.Info

func (*Result) HandleEntityErrors added in v0.8.0

func (cr *Result) HandleEntityErrors(ent tt.Entity, errs []error, warns []error)

HandleEntityErrors .

func (*Result) HandleError added in v0.8.0

func (cr *Result) HandleError(fn string, errs []error)

HandleError .

func (*Result) HandleSourceErrors added in v0.8.0

func (cr *Result) HandleSourceErrors(fn string, errs []error, warns []error)

HandleSourceErrors .

type ValidationError added in v0.16.0

type ValidationError struct {
	Filename   string `db:"-"`
	Field      string `db:"-"`
	ErrorCode  string `db:"-"`
	Line       int
	GroupKey   string
	Message    string
	EntityID   string
	Value      string
	Geometry   tt.Geometry
	EntityJson tt.Map
}

func (ValidationError) Error added in v0.16.0

func (e ValidationError) Error() string

type ValidationErrorGroup added in v0.16.0

type ValidationErrorGroup struct {
	Filename  string
	Field     string
	ErrorType string
	ErrorCode string
	GroupKey  string
	Level     int
	Count     int
	Limit     int               `db:"-"`
	Errors    []ValidationError `db:"-"`
}

ValidationErrorGroup helps group errors together with a maximum limit on the number stored.

func NewValidationErrorGroup added in v0.16.0

func NewValidationErrorGroup(err error, limit int) *ValidationErrorGroup

func (*ValidationErrorGroup) Add added in v0.16.0

func (e *ValidationErrorGroup) Add(err error)

Add an error to the error group.

func (*ValidationErrorGroup) Key added in v0.16.0

func (eg *ValidationErrorGroup) Key() string

type Validator added in v0.8.0

type Validator interface {
	Validate(tt.Entity) []error
}

Validator is called for each entity.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL