goblin.properties package

Submodules

goblin.properties.base module

class goblin.properties.base.BaseValueManager(graph_property, value, strategy=<class 'goblin.properties.strategy.SaveAlways'>)[source]

Bases: object

Value managers are used to manage values pulled from the database and track state changes.

These are useful for save strategies.

changed

Indicates whether or not this value has changed.

Return type:bool
deleted

Indicates whether or not this value has been deleted.

Return type:bool
delval()[source]

Delete a given value

get_property()[source]

Returns a value-managed property attributes

Return type:property
getval()[source]

Return the current value.

previous_value
setval(val)[source]

Updates the current value.

param val:The new value
class goblin.properties.base.GraphProperty(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: object

Base class for graph property types

can_delete
data_type = 'Object'
db_field_name

Returns the name of the goblin name of this graph property

Return type:basestring | str
get_default()[source]

Returns the default value for this graph property if one is available.

Return type:Object | None
get_save_strategy()[source]

Returns the save strategy attached to this graph property.

Return type:Callable
classmethod get_value_from_choices(value, choices)[source]

Returns the key for the choices tuple of tuples

Note if you are using classes, they must implement the __in__ and __eq__ for the logical comparison.

Parameters:value (Object) – The raw value to test if it exists in the valid choices. Could be the key or the value in the dict
Return type:Object
has_db_field_prefix

Determines if a field prefix has already been defined.

has_default

Indicates whether or not this graph property has a default value.

Return type:bool
instance_counter = 0
set_db_field_prefix(prefix, override=False)[source]

Sets the graph property name prefix during document class construction.

set_property_name(name)[source]

Sets the graph property name during document class construction.

This value will be ignored if db_field is set in __init__

Parameters:name (str) – The name of this graph property
should_save(first_save=False)[source]

Indicates whether or not the property should be saved based on it’s save strategy.

Return type:bool
to_database(value)[source]

Converts python value into database value

Return type:Object
to_python(value)[source]

Converts data from the database into python values raises a ValidationError if the value can’t be converted

Return type:Object
validate(value)[source]

Returns a cleaned and validated value. Raises a ValidationError if there’s a problem

Return type:Object
validator = <goblin.properties.validators.BaseValidator object>
value_manager

alias of BaseValueManager

goblin.properties.properties module

class goblin.properties.properties.Boolean(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

Boolean Data property type

data_type = 'Boolean'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.BooleanValidator object>
class goblin.properties.properties.DateTime(strict=True, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

UTC DateTime Data property type

data_type = 'Double'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.DateTimeUTCValidator object>
class goblin.properties.properties.DateTimeNaive(strict=True, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

DateTime Data property type

data_type = 'Double'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.DateTimeValidator object>
class goblin.properties.properties.Decimal(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

Decimal Data property type

to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.DecimalValidator object>
class goblin.properties.properties.Dictionary(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

Dictionary Data property type

data_type = 'HashMap'
validator = <goblin.properties.validators.DictValidator object>
class goblin.properties.properties.Double(**kwargs)[source]

Bases: goblin.properties.base.GraphProperty

Double Data property type

data_type = 'Double'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.FloatValidator object>
class goblin.properties.properties.Email(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

Email Data property type

data_type = 'String'
validate(value)[source]
validator = <goblin.properties.validators.EmailValidator object>
class goblin.properties.properties.Float(**kwargs)[source]

Bases: goblin.properties.properties.Double

Float class for backwards compatability / if you really want to

class goblin.properties.properties.IPV4(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

IPv4 Data property type

data_type = 'String'
validate(value)[source]
validator = <goblin.properties.validators.RegexValidator object>
class goblin.properties.properties.IPV6(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

IPv6 Data property type

data_type = 'String'
validate(value)[source]
validator = <goblin.properties.validators.RegexValidator object>
class goblin.properties.properties.IPV6WithV4(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

IPv6 with Mapped/Translated/Embedded IPv4 Data property type

data_type = 'String'
validate(value)[source]
validator = <goblin.properties.validators.RegexValidator object>
class goblin.properties.properties.Integer(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

Integer Data property type

data_type = 'Integer'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.LongValidator object>
class goblin.properties.properties.List(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

List Data property type

data_type = 'ArrayList'
validator = <goblin.properties.validators.ListValidator object>
class goblin.properties.properties.Long(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

Long Data property type

data_type = 'Long'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.LongValidator object>
class goblin.properties.properties.PositiveInteger(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.properties.Integer

Positive Integer Data property type

data_type = 'Integer'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.PositiveIntegerValidator object>
class goblin.properties.properties.PositiveLong(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.properties.Long

Positive Long Data property type

data_type = 'Long'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.PositiveIntegerValidator object>
class goblin.properties.properties.Short(description=None, primary_key=False, index=False, index_ext=None, db_field=None, choices=None, default=None, required=False, save_strategy=<class 'goblin.properties.strategy.SaveAlways'>, unique=None, db_field_prefix='')[source]

Bases: goblin.properties.base.GraphProperty

Short Data property type

data_type = 'Short'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.IntegerValidator object>
class goblin.properties.properties.Slug(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

Slug Data property type

data_type = 'String'
validate(value)[source]
validator = <goblin.properties.validators.RegexValidator object>
class goblin.properties.properties.String(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

String/CharField property

data_type = 'String'
to_python(value)[source]
validate(value)[source]
validator = <goblin.properties.validators.StringValidator object>
goblin.properties.properties.Text

alias of String

class goblin.properties.properties.URL(*args, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

URL Data property type

data_type = 'String'
validate(value)[source]
validator = <goblin.properties.validators.URLValidator object>
class goblin.properties.properties.UUID(default=<function UUID.<lambda>>, **kwargs)[source]

Bases: goblin.properties.base.GraphProperty

Universally Unique Identifier (UUID) type - UUID4 by default

data_type = 'String'
to_database(value)[source]
to_python(value)[source]
validator = <goblin.properties.validators.RegexValidator object>

goblin.properties.strategy module

class goblin.properties.strategy.SaveAlways[source]

Bases: goblin.properties.strategy.Strategy

Save this value every time the corresponding model is saved.

classmethod condition(previous_value, value, has_changed=False, first_save=False, graph_property=None)[source]

Save this value every time the corresponding model is saved.

Return type:bool
class goblin.properties.strategy.SaveOnChange[source]

Bases: goblin.properties.strategy.Strategy

Only save this value if it has changed.

classmethod condition(previous_value, value, has_changed=False, first_save=False, graph_property=None)[source]

Always save this value if it has changed

Return type:bool
class goblin.properties.strategy.SaveOnDecrease[source]

Bases: goblin.properties.strategy.Strategy

Save this value only if it is decreasing

classmethod condition(previous_value, value, has_changed=False, first_save=False, graph_property=None)[source]

Only save this value if it is decreasing

Return type:bool
class goblin.properties.strategy.SaveOnIncrease[source]

Bases: goblin.properties.strategy.Strategy

Save this value only if it is increasing

classmethod condition(previous_value, value, has_changed=False, first_save=False, graph_property=None)[source]

Only save this value if it is increasing

Return type:bool
class goblin.properties.strategy.SaveOnce[source]

Bases: goblin.properties.strategy.Strategy

Only save this value once. If it changes throw an exception.

classmethod condition(previous_value, value, has_changed=False, first_save=False, graph_property=None)[source]

Always save this value if it has changed

Raises:SaveStrategyException
Return type:bool
class goblin.properties.strategy.Strategy[source]

Bases: object

Saving strategies for goblin. These are used to indicate when a property should be saved after the initial vertex/edge creation.

classmethod condition(previous_value, value, has_changed=False, first_save=False, graph_property=None)[source]

Default save strategy condition

Raises:NotImplementedError

goblin.properties.validators module

class goblin.properties.validators.BaseValidator(message=None, code=None)[source]

Bases: object

code = 'invalid'
message = 'Enter a valid value.'
class goblin.properties.validators.BooleanValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

message = 'Enter a valid Boolean.'
class goblin.properties.validators.DateTimeUTCValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

message = 'Not a valid UTC DateTime: {}'
class goblin.properties.validators.DateTimeValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

message = 'Not a valid DateTime: {}'
class goblin.properties.validators.DecimalValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.NumericValidator

data_types = (<class 'float'>, <class 'decimal.Decimal'>)
class goblin.properties.validators.DictValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

message = 'Enter a valid dict'
class goblin.properties.validators.EmailValidator(regex=None, message=None, code=None)[source]

Bases: goblin.properties.validators.RegexValidator

code = 'invalid'
message = 'Enter a valid email address: {}'
regex = re.compile('(^[-!#$%&\'*+/=?^_`{}|~0-9A-Z]+(\\.[-!#$%&\'*+/=?^_`{}|~0-9A-Z]+)*|^"([\\001-\\010\\013\\014\\016-\\037!#-\\[\\]-\\177]|\\\\[\\001-\\011\\013\\014\\016-\\177])*")@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-, re.IGNORECASE)
class goblin.properties.validators.FloatValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.NumericValidator

data_types = (<class 'float'>,)
class goblin.properties.validators.IntegerValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.NumericValidator

data_types = (<class 'int'>,)
class goblin.properties.validators.ListValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

data_types = (<class 'tuple'>, <class 'list'>)
message = 'Enter a valid list'
class goblin.properties.validators.LongValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.NumericValidator

data_types = (<class 'int'>,)
class goblin.properties.validators.NumericValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

data_types = (<class 'float'>, <class 'int'>, <class 'decimal.Decimal'>)
message = 'Enter a valid number.'
class goblin.properties.validators.PositiveIntegerValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.NumericValidator

data_types = (<class 'int'>,)
class goblin.properties.validators.RegexValidator(regex=None, message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

regex = ''
class goblin.properties.validators.StringValidator(message=None, code=None)[source]

Bases: goblin.properties.validators.BaseValidator

data_type = (<class 'str'>,)
message = 'Enter a valid string: {}'
class goblin.properties.validators.URLValidator(regex=None, message=None, code=None)[source]

Bases: goblin.properties.validators.RegexValidator

code = 'invalid'
message = 'Enter a valid URL address: {}'
regex = re.compile('^(?:http|ftp)s?://(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\\.)+(?:[A-Z]{2,6}\\.?|[A-Z0-9-]{2,}\\.?)|localhost|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\[?[A-F0-9]*:[A-F0-9:]+\\]?)(?::\\d+)?(?:/?|, re.IGNORECASE)