# `subvertpy.properties` module documentation

Part of `subvertpy`
Handling of Subversion properties.

Class | InvalidExternalsDescription | Undocumented
Function | is_valid_property_name | Check the validity of a property name.
Function | time_to_cstring | Determine string representation of a time.
Function | time_from_cstring | Parse a time from a cstring.
Function | parse_externals_description | Parse an svn:externals property value.
Function | parse_mergeinfo_property | Parse a mergeinfo property.
Function | generate_mergeinfo_property | Generate the contents of the svn:mergeinfo property
Function | range_includes_revnum | Check if the specified range contains the mentioned revision number.
Function | range_add_revnum | Add revision number to a list of ranges
Function | mergeinfo_includes_revision | Check if the specified mergeinfo contains a path in revnum.
Function | mergeinfo_add_revision | Add a revision to a mergeinfo dictionary
Function | diff | Find the differences between two property dictionaries.

def is_valid_property_name(prop):
Check the validity of a property name.

Parameters | prop | Property name
Returns | Whether prop is a valid property name

def time_to_cstring(timestamp):
Determine string representation of a time.

Parameters | timestamp | Number of microseconds since the start of 1970
Returns | string with date

def time_from_cstring(text):
Parse a time from a cstring.

Parameters | text | Parse text
Returns | number of microseconds since the start of 1970

def parse_externals_description(base_url, val):
Parse an svn:externals property value.

Parameters | base_url | URL on which the property is set. Used for relative externals.
Returns | dictionary with local names as keys, (revnum, url) as value. revnum is the revision number and is set to None if not applicable.

def parse_mergeinfo_property(text):
Parse a mergeinfo property.

Parameters | text | Property contents

def generate_mergeinfo_property(merges):
Generate the contents of the svn:mergeinfo property

Parameters | merges | dictionary mapping paths to lists of ranges
Returns | Property contents

def range_includes_revnum(ranges, revnum):
Check if the specified range contains the mentioned revision number.

Parameters | ranges | list of ranges
| revnum | revision number
Returns | Whether or not the revision number is included

def range_add_revnum(ranges, revnum, inheritable=True):
Add revision number to a list of ranges

Parameters | ranges | List of ranges
| revnum | Revision number to add
| inheritable | TODO
Returns | New list of ranges

def mergeinfo_includes_revision(merges, path, revnum):
Check if the specified mergeinfo contains a path in revnum.

Parameters | merges | Dictionary with merges
| path | Merged path
| revnum | Revision number
Returns | Whether the revision is included

def mergeinfo_add_revision(mergeinfo, path, revnum):
Add a revision to a mergeinfo dictionary

Parameters | mergeinfo | Merginfo dictionary
| path | Merged path to add
| revnum | Merged revision to add
Returns | Updated dictionary

def diff(current, previous):
Find the differences between two property dictionaries.

Parameters | current | Dictionary with current (new) properties
| previous | Dictionary with previous (old) properties
Returns | Dictionary that contains an entry for each property that was changed. Value is a tuple with the old and the new property value.