madrigal.openmadrigal module
The openmadrigal module provides access to all OpenMadrigal installations via http and to OpenMadrigal Subversion.
$Id: openmadrigal.py 7044 2019-10-07 19:13:16Z brideout $
"""The openmadrigal module provides access to all OpenMadrigal installations via http and to OpenMadrigal Subversion.
$Id: openmadrigal.py 7044 2019-10-07 19:13:16Z brideout $
"""
import os, os.path, sys
import urllib
import re
import madrigal.admin
import madrigal.metadata
class OpenMadrigal:
"""OpenMadrigal is an object that provides access to all Open Madrigal installations via http and to OpenMadrigal Subversion.
Usage example::
import madrigal.openmadrigal
try:
test = madrigal.openmadrigal.OpenMadrigal()
# get the metadata file fileTab.txt from Madrigal site with id = 1
test.getFileTab(1)
except madrigal.admin.MadrigalError, e:
print e.getExceptionStr()
Non-standard Python modules used: None
Change history:
Written by "Bill Rideout":mailto:wrideout@haystack.mit.edu Aug. 14, 2002
"""
#constants
_webProtocol = "http"
""" Change the above string to use another web protocol such as https. """
_openMadrigalUrl = 'http://cedar.openmadrigal.org/'
# the following constants are used by cgi script getMetadata
__expTab = 0
__fileTab = 1
__dataTab = 2
__instTab = 3
__parcods = 4
__siteTab = 5
__typeTab = 6
__instKindat = 7
__instParm = 8
__madCat = 9
__instType = 10
def __init__(self, madDB=None):
"""__init__ initializes OpenMadrigal by setting or creating a MadrigalDB object.
Inputs: Existing MadrigalDB object, by default = None.
Returns: void
Affects: Initializes all the class member variables.
Exceptions: None.
"""
if madDB == None:
self.__madDB = madrigal.metadata.MadrigalDB()
else:
self.__madDB = madDB
# create the needed MadrigalSite object
self.__madSite = madrigal.metadata.MadrigalSite(self.__madDB)
def __getMetadata(self, siteId, metadataType):
""" __getMetadata is a private helper function called to get metadata files via the web.
Inputs: siteId - integer identifying Madrigal site.
metadataType - constant defined by getMetadata cgi script
Returns: The desired metadata file as a string, or None if not successful
Affects: None.
Exceptions: None.
"""
# get site server name
serverName = self.__madSite.getSiteServer(siteId)
if serverName == None:
return None
# get site relative cgi path
relativeCgi = self.__madSite.getSiteRelativeCGI(siteId)
if relativeCgi == None:
return None
# create url string
if not relativeCgi in ('', '.'):
urlStr = serverName + '/' + \
relativeCgi + '/getMetadata?fileType=' + str(metadataType)
else:
urlStr = serverName + \
'/getMetadata?fileType=' + str(metadataType)
if urlStr.find('http') == -1:
urlStr = self._webProtocol + '://' + urlStr
try:
file = urllib.request.urlopen(urlStr)
fileStr = file.read()
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return fileStr
except:
return None
def _limitColumns(self, text, numCols, delimiter=','):
"""_limitColumns is a private method that takes metadata text and returns text with a set number of columns.
Used to remove optional metadata until all Madrigal sites can handle it.
Inputs:
text: metadata text to modify by limiting to a set number of columns
numCols: number of columns to limit metadata to
delimiter: delimiter to use for splitting the metadata. Default is comma
Returns:
Modified metadata text
"""
newText = ''
lines = text.split('\n')
for line in lines:
if len(line.strip()) == 0:
continue
items = line.split(delimiter)
if len(items) < numCols:
raise IOError('In line <%s> needed %i items, found only %i' % (line, numCols, len(items)))
newLine = delimiter.join(items[:numCols])
newText += '%s\n' % (newLine)
return(newText)
# public methods
def getOpenMadrigalUrl(self):
"""returns self._openMadrigalUrl
"""
return(self._openMadrigalUrl)
def getMetadataFromOpenMadrigal(self, filename):
"""getMetadataFromOpenMadrigal returns a shared metadata file from OpenMadrigal server
as a string
Inputs:
filename - metadata file to download, relative to metadata
Returns: File contents as a string.
Affects: Nothing
"""
urlStr = self._openMadrigalUrl + 'getOpenMadrigalSharedFiles?filename=%s' % (filename)
try:
file = urllib.request.urlopen(urlStr)
fileStr = file.read()
return(fileStr.decode('utf8'))
except:
return('')
def getExpMetadata(self, siteId, numCols=None):
"""getExpMetadata returns the expTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the expTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__expTab)
if numCols:
fileStr = self._limitColumns(fileStr, numCols)
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
def getFileMetadata(self, siteId, numCols=None):
"""getFileMetadata returns the fileTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the fileTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__fileTab)
if numCols:
fileStr = self._limitColumns(fileStr, numCols)
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
def getDataMetadata(self, siteId):
"""getDataMetadata returns the dataTab.txt file from siteId as a string.
This file is deprecated with Madrigal 2.5 and may not exist.
Inputs: None
Returns: the dataTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__dataTab)
return fileStr
def getInstMetadata(self, siteId):
"""getInstMetadata returns the instTab.txt file from siteId as a string.
Inputs: None
Returns: the instTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__instTab)
return fileStr
def getParcodsMetadata(self, siteId):
"""getParcodsMetadata returns the parcods.tab (or parmCodes.txt if Madrigal3) file from siteId as a string.
Inputs: None
Returns: the parcods.tab file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__parcods)
return fileStr
def getSiteMetadata(self, siteId):
"""getSiteMetadata returns the siteTab.txt file from siteId as a string.
Inputs: None
Returns: the siteTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__siteTab)
return fileStr
def getTypeMetadata(self, siteId):
"""getTypeMetadata returns the typeTab.txt file from siteId as a string.
Inputs: None
Returns: the typeTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__typeTab)
return fileStr
def getMadCatMetadata(self, siteId):
"""getMadCatMetadata returns the madCatTab.txt file from siteId as a string.
Inputs: None
Returns: the madCatTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__madCat)
return fileStr
def getInstTypeMetadata(self, siteId):
"""getInstTypeMetadata returns the instType.txt file from siteId as a string.
Inputs: None
Returns: the instType.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__instType)
return fileStr
def getLatestSubversionVersion(self, fullPath):
"""getLatestSubversionVersion returns the latest Subversion version of the file given by fullPath as a string.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string,
or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getLatestCvsVersion
"""
return(self.getLatestCvsVersion(fullPath))
def getLatestCvsVersion(self, fullPath):
"""getLatestCvsVersion returns the latest Subversion version of the file given by fullPath as a string.
CVS is no longer the Madrigal repository. Equivalent to getLatestSubversionVersion.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string,
or None if not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getLatestMetadataVersion?fullPath=%s' % (fullPath)
f = urllib.request.urlopen(urlStr)
fileStr = f.read()
f.close()
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
except:
return None
def getAllRevisionNumbers(self, fullPath):
"""getAllRevisionNumbers a list of all revision numbers for a given file in Subversion in
order from latest to earliest.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: a list of all revision numbers for a given file in Subversion in
order from latest to earliest. Empty list if file not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getAllMetadataVersions?fullPath=%s' % (fullPath)
f = urllib.request.urlopen(urlStr)
fileStr = (f.read()).decode('utf8')
f.close()
retList = [item.strip() for item in fileStr.split('\n') if len(item.strip()) > 0 ]
return(retList)
except:
return []
def getSubversionVersion(self, fullPath, revision):
"""getSubversionVersion returns the Subversion version of the file given by fullPath and revision.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision,
or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getCvsVersion
"""
return(self.getCvsVersion(fullPath, revision))
def getCvsVersion(self, fullPath, revision):
"""getCvsVersion returns the Subversion version of the file given by fullPath and revision.
CVS is no longer the Madrigal repository. Equivalent to getSubversionVersion.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision,
or None if not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getMetadataVersion?fullPath=%s&version=%s' % (fullPath, str(revision))
finalFile = urllib.request.urlopen(urlStr)
text = finalFile.read()
finalFile.close()
return(text.decode('utf8'))
except:
return None
if __name__ == '__main__':
test = OpenMadrigal()
print('This is expTab.txt:')
print(test.getExpMetadata(998) + '\n')
print('This is fileTab.txt:')
print(test.getFileMetadata(998) + '\n')
print('This is dataTab.txt:')
print(test.getDataMetadata(998) + '\n')
print('This is instTab.txt:')
print(test.getInstMetadata(998) + '\n')
print('This is parcods.tab:')
print(test.getParcodsMetadata(998) + '\n')
print('This is siteTab.txt:')
print(test.getSiteMetadata(998) + '\n')
print('This is typeTab.txt:')
print(test.getTypeMetadata(998) + '\n')
print(test.getLatestSubversionVersion('madroot/metadata/siteTab.txt'))
print(test.getLatestCvsVersion('madroot/metadata/siteTab.txt'))
print(test.getAllRevisionNumbers('madroot/metadata/siteTab.txt'))
print(test.getSubversionVersion('madroot/metadata/siteTab.txt', 1808))
print(test.getCvsVersion('madroot/metadata/siteTab.txt', 1808))
Classes
class OpenMadrigal
OpenMadrigal is an object that provides access to all Open Madrigal installations via http and to OpenMadrigal Subversion.
Usage example::
import madrigal.openmadrigal
try:
test = madrigal.openmadrigal.OpenMadrigal()
# get the metadata file fileTab.txt from Madrigal site with id = 1
test.getFileTab(1)
except madrigal.admin.MadrigalError, e:
print e.getExceptionStr()
Non-standard Python modules used: None
Change history:
Written by "Bill Rideout":mailto:wrideout@haystack.mit.edu Aug. 14, 2002
class OpenMadrigal:
"""OpenMadrigal is an object that provides access to all Open Madrigal installations via http and to OpenMadrigal Subversion.
Usage example::
import madrigal.openmadrigal
try:
test = madrigal.openmadrigal.OpenMadrigal()
# get the metadata file fileTab.txt from Madrigal site with id = 1
test.getFileTab(1)
except madrigal.admin.MadrigalError, e:
print e.getExceptionStr()
Non-standard Python modules used: None
Change history:
Written by "Bill Rideout":mailto:wrideout@haystack.mit.edu Aug. 14, 2002
"""
#constants
_webProtocol = "http"
""" Change the above string to use another web protocol such as https. """
_openMadrigalUrl = 'http://cedar.openmadrigal.org/'
# the following constants are used by cgi script getMetadata
__expTab = 0
__fileTab = 1
__dataTab = 2
__instTab = 3
__parcods = 4
__siteTab = 5
__typeTab = 6
__instKindat = 7
__instParm = 8
__madCat = 9
__instType = 10
def __init__(self, madDB=None):
"""__init__ initializes OpenMadrigal by setting or creating a MadrigalDB object.
Inputs: Existing MadrigalDB object, by default = None.
Returns: void
Affects: Initializes all the class member variables.
Exceptions: None.
"""
if madDB == None:
self.__madDB = madrigal.metadata.MadrigalDB()
else:
self.__madDB = madDB
# create the needed MadrigalSite object
self.__madSite = madrigal.metadata.MadrigalSite(self.__madDB)
def __getMetadata(self, siteId, metadataType):
""" __getMetadata is a private helper function called to get metadata files via the web.
Inputs: siteId - integer identifying Madrigal site.
metadataType - constant defined by getMetadata cgi script
Returns: The desired metadata file as a string, or None if not successful
Affects: None.
Exceptions: None.
"""
# get site server name
serverName = self.__madSite.getSiteServer(siteId)
if serverName == None:
return None
# get site relative cgi path
relativeCgi = self.__madSite.getSiteRelativeCGI(siteId)
if relativeCgi == None:
return None
# create url string
if not relativeCgi in ('', '.'):
urlStr = serverName + '/' + \
relativeCgi + '/getMetadata?fileType=' + str(metadataType)
else:
urlStr = serverName + \
'/getMetadata?fileType=' + str(metadataType)
if urlStr.find('http') == -1:
urlStr = self._webProtocol + '://' + urlStr
try:
file = urllib.request.urlopen(urlStr)
fileStr = file.read()
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return fileStr
except:
return None
def _limitColumns(self, text, numCols, delimiter=','):
"""_limitColumns is a private method that takes metadata text and returns text with a set number of columns.
Used to remove optional metadata until all Madrigal sites can handle it.
Inputs:
text: metadata text to modify by limiting to a set number of columns
numCols: number of columns to limit metadata to
delimiter: delimiter to use for splitting the metadata. Default is comma
Returns:
Modified metadata text
"""
newText = ''
lines = text.split('\n')
for line in lines:
if len(line.strip()) == 0:
continue
items = line.split(delimiter)
if len(items) < numCols:
raise IOError('In line <%s> needed %i items, found only %i' % (line, numCols, len(items)))
newLine = delimiter.join(items[:numCols])
newText += '%s\n' % (newLine)
return(newText)
# public methods
def getOpenMadrigalUrl(self):
"""returns self._openMadrigalUrl
"""
return(self._openMadrigalUrl)
def getMetadataFromOpenMadrigal(self, filename):
"""getMetadataFromOpenMadrigal returns a shared metadata file from OpenMadrigal server
as a string
Inputs:
filename - metadata file to download, relative to metadata
Returns: File contents as a string.
Affects: Nothing
"""
urlStr = self._openMadrigalUrl + 'getOpenMadrigalSharedFiles?filename=%s' % (filename)
try:
file = urllib.request.urlopen(urlStr)
fileStr = file.read()
return(fileStr.decode('utf8'))
except:
return('')
def getExpMetadata(self, siteId, numCols=None):
"""getExpMetadata returns the expTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the expTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__expTab)
if numCols:
fileStr = self._limitColumns(fileStr, numCols)
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
def getFileMetadata(self, siteId, numCols=None):
"""getFileMetadata returns the fileTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the fileTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__fileTab)
if numCols:
fileStr = self._limitColumns(fileStr, numCols)
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
def getDataMetadata(self, siteId):
"""getDataMetadata returns the dataTab.txt file from siteId as a string.
This file is deprecated with Madrigal 2.5 and may not exist.
Inputs: None
Returns: the dataTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__dataTab)
return fileStr
def getInstMetadata(self, siteId):
"""getInstMetadata returns the instTab.txt file from siteId as a string.
Inputs: None
Returns: the instTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__instTab)
return fileStr
def getParcodsMetadata(self, siteId):
"""getParcodsMetadata returns the parcods.tab (or parmCodes.txt if Madrigal3) file from siteId as a string.
Inputs: None
Returns: the parcods.tab file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__parcods)
return fileStr
def getSiteMetadata(self, siteId):
"""getSiteMetadata returns the siteTab.txt file from siteId as a string.
Inputs: None
Returns: the siteTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__siteTab)
return fileStr
def getTypeMetadata(self, siteId):
"""getTypeMetadata returns the typeTab.txt file from siteId as a string.
Inputs: None
Returns: the typeTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__typeTab)
return fileStr
def getMadCatMetadata(self, siteId):
"""getMadCatMetadata returns the madCatTab.txt file from siteId as a string.
Inputs: None
Returns: the madCatTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__madCat)
return fileStr
def getInstTypeMetadata(self, siteId):
"""getInstTypeMetadata returns the instType.txt file from siteId as a string.
Inputs: None
Returns: the instType.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__instType)
return fileStr
def getLatestSubversionVersion(self, fullPath):
"""getLatestSubversionVersion returns the latest Subversion version of the file given by fullPath as a string.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string,
or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getLatestCvsVersion
"""
return(self.getLatestCvsVersion(fullPath))
def getLatestCvsVersion(self, fullPath):
"""getLatestCvsVersion returns the latest Subversion version of the file given by fullPath as a string.
CVS is no longer the Madrigal repository. Equivalent to getLatestSubversionVersion.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string,
or None if not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getLatestMetadataVersion?fullPath=%s' % (fullPath)
f = urllib.request.urlopen(urlStr)
fileStr = f.read()
f.close()
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
except:
return None
def getAllRevisionNumbers(self, fullPath):
"""getAllRevisionNumbers a list of all revision numbers for a given file in Subversion in
order from latest to earliest.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: a list of all revision numbers for a given file in Subversion in
order from latest to earliest. Empty list if file not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getAllMetadataVersions?fullPath=%s' % (fullPath)
f = urllib.request.urlopen(urlStr)
fileStr = (f.read()).decode('utf8')
f.close()
retList = [item.strip() for item in fileStr.split('\n') if len(item.strip()) > 0 ]
return(retList)
except:
return []
def getSubversionVersion(self, fullPath, revision):
"""getSubversionVersion returns the Subversion version of the file given by fullPath and revision.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision,
or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getCvsVersion
"""
return(self.getCvsVersion(fullPath, revision))
def getCvsVersion(self, fullPath, revision):
"""getCvsVersion returns the Subversion version of the file given by fullPath and revision.
CVS is no longer the Madrigal repository. Equivalent to getSubversionVersion.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision,
or None if not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getMetadataVersion?fullPath=%s&version=%s' % (fullPath, str(revision))
finalFile = urllib.request.urlopen(urlStr)
text = finalFile.read()
finalFile.close()
return(text.decode('utf8'))
except:
return None
Ancestors (in MRO)
- OpenMadrigal
- builtins.object
Static methods
def __init__(
self, madDB=None)
init initializes OpenMadrigal by setting or creating a MadrigalDB object.
Inputs: Existing MadrigalDB object, by default = None.
Returns: void
Affects: Initializes all the class member variables.
Exceptions: None.
def __init__(self, madDB=None):
"""__init__ initializes OpenMadrigal by setting or creating a MadrigalDB object.
Inputs: Existing MadrigalDB object, by default = None.
Returns: void
Affects: Initializes all the class member variables.
Exceptions: None.
"""
if madDB == None:
self.__madDB = madrigal.metadata.MadrigalDB()
else:
self.__madDB = madDB
# create the needed MadrigalSite object
self.__madSite = madrigal.metadata.MadrigalSite(self.__madDB)
def getAllRevisionNumbers(
self, fullPath)
getAllRevisionNumbers a list of all revision numbers for a given file in Subversion in order from latest to earliest.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk (example: 'madroot/metadata/siteTab.txt')
Returns: a list of all revision numbers for a given file in Subversion in order from latest to earliest. Empty list if file not found
Affects: Nothing
Exceptions: None
def getAllRevisionNumbers(self, fullPath):
"""getAllRevisionNumbers a list of all revision numbers for a given file in Subversion in
order from latest to earliest.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: a list of all revision numbers for a given file in Subversion in
order from latest to earliest. Empty list if file not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getAllMetadataVersions?fullPath=%s' % (fullPath)
f = urllib.request.urlopen(urlStr)
fileStr = (f.read()).decode('utf8')
f.close()
retList = [item.strip() for item in fileStr.split('\n') if len(item.strip()) > 0 ]
return(retList)
except:
return []
def getCvsVersion(
self, fullPath, revision)
getCvsVersion returns the Subversion version of the file given by fullPath and revision.
CVS is no longer the Madrigal repository. Equivalent to getSubversionVersion.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision, or None if not found
Affects: Nothing
Exceptions: None
def getCvsVersion(self, fullPath, revision):
"""getCvsVersion returns the Subversion version of the file given by fullPath and revision.
CVS is no longer the Madrigal repository. Equivalent to getSubversionVersion.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision,
or None if not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getMetadataVersion?fullPath=%s&version=%s' % (fullPath, str(revision))
finalFile = urllib.request.urlopen(urlStr)
text = finalFile.read()
finalFile.close()
return(text.decode('utf8'))
except:
return None
def getDataMetadata(
self, siteId)
getDataMetadata returns the dataTab.txt file from siteId as a string.
This file is deprecated with Madrigal 2.5 and may not exist.
Inputs: None
Returns: the dataTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getDataMetadata(self, siteId):
"""getDataMetadata returns the dataTab.txt file from siteId as a string.
This file is deprecated with Madrigal 2.5 and may not exist.
Inputs: None
Returns: the dataTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__dataTab)
return fileStr
def getExpMetadata(
self, siteId, numCols=None)
getExpMetadata returns the expTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the expTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getExpMetadata(self, siteId, numCols=None):
"""getExpMetadata returns the expTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the expTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__expTab)
if numCols:
fileStr = self._limitColumns(fileStr, numCols)
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
def getFileMetadata(
self, siteId, numCols=None)
getFileMetadata returns the fileTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the fileTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getFileMetadata(self, siteId, numCols=None):
"""getFileMetadata returns the fileTab.txt file from siteId as a string.
Inputs:
siteId - the siteId to retrieve the expTab.txt file from
numCols - if None, do not limit the number of columns. If numCols, then
limit metadata to numCols in length.
Returns: the fileTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__fileTab)
if numCols:
fileStr = self._limitColumns(fileStr, numCols)
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
def getInstMetadata(
self, siteId)
getInstMetadata returns the instTab.txt file from siteId as a string.
Inputs: None
Returns: the instTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getInstMetadata(self, siteId):
"""getInstMetadata returns the instTab.txt file from siteId as a string.
Inputs: None
Returns: the instTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__instTab)
return fileStr
def getInstTypeMetadata(
self, siteId)
getInstTypeMetadata returns the instType.txt file from siteId as a string.
Inputs: None
Returns: the instType.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getInstTypeMetadata(self, siteId):
"""getInstTypeMetadata returns the instType.txt file from siteId as a string.
Inputs: None
Returns: the instType.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__instType)
return fileStr
def getLatestCvsVersion(
self, fullPath)
getLatestCvsVersion returns the latest Subversion version of the file given by fullPath as a string.
CVS is no longer the Madrigal repository. Equivalent to getLatestSubversionVersion.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk (example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string, or None if not found
Affects: Nothing
Exceptions: None
def getLatestCvsVersion(self, fullPath):
"""getLatestCvsVersion returns the latest Subversion version of the file given by fullPath as a string.
CVS is no longer the Madrigal repository. Equivalent to getLatestSubversionVersion.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string,
or None if not found
Affects: Nothing
Exceptions: None
"""
try:
urlStr = self._openMadrigalUrl + 'getLatestMetadataVersion?fullPath=%s' % (fullPath)
f = urllib.request.urlopen(urlStr)
fileStr = f.read()
f.close()
if type(fileStr) == bytes:
fileStr = fileStr.decode('utf8')
return(fileStr)
except:
return None
def getLatestSubversionVersion(
self, fullPath)
getLatestSubversionVersion returns the latest Subversion version of the file given by fullPath as a string.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk (example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string, or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getLatestCvsVersion
def getLatestSubversionVersion(self, fullPath):
"""getLatestSubversionVersion returns the latest Subversion version of the file given by fullPath as a string.
Inputs: fullPath - full path to the Madrigal file in Subversion relative to trunk
(example: 'madroot/metadata/siteTab.txt')
Returns: the latest Subversion version of the file given by fullPath as a string,
or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getLatestCvsVersion
"""
return(self.getLatestCvsVersion(fullPath))
def getMadCatMetadata(
self, siteId)
getMadCatMetadata returns the madCatTab.txt file from siteId as a string.
Inputs: None
Returns: the madCatTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getMadCatMetadata(self, siteId):
"""getMadCatMetadata returns the madCatTab.txt file from siteId as a string.
Inputs: None
Returns: the madCatTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__madCat)
return fileStr
def getMetadataFromOpenMadrigal(
self, filename)
getMetadataFromOpenMadrigal returns a shared metadata file from OpenMadrigal server as a string
Inputs:
filename - metadata file to download, relative to metadata
Returns: File contents as a string.
Affects: Nothing
def getMetadataFromOpenMadrigal(self, filename):
"""getMetadataFromOpenMadrigal returns a shared metadata file from OpenMadrigal server
as a string
Inputs:
filename - metadata file to download, relative to metadata
Returns: File contents as a string.
Affects: Nothing
"""
urlStr = self._openMadrigalUrl + 'getOpenMadrigalSharedFiles?filename=%s' % (filename)
try:
file = urllib.request.urlopen(urlStr)
fileStr = file.read()
return(fileStr.decode('utf8'))
except:
return('')
def getOpenMadrigalUrl(
self)
returns self._openMadrigalUrl
def getOpenMadrigalUrl(self):
"""returns self._openMadrigalUrl
"""
return(self._openMadrigalUrl)
def getParcodsMetadata(
self, siteId)
getParcodsMetadata returns the parcods.tab (or parmCodes.txt if Madrigal3) file from siteId as a string.
Inputs: None
Returns: the parcods.tab file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getParcodsMetadata(self, siteId):
"""getParcodsMetadata returns the parcods.tab (or parmCodes.txt if Madrigal3) file from siteId as a string.
Inputs: None
Returns: the parcods.tab file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__parcods)
return fileStr
def getSiteMetadata(
self, siteId)
getSiteMetadata returns the siteTab.txt file from siteId as a string.
Inputs: None
Returns: the siteTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getSiteMetadata(self, siteId):
"""getSiteMetadata returns the siteTab.txt file from siteId as a string.
Inputs: None
Returns: the siteTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__siteTab)
return fileStr
def getSubversionVersion(
self, fullPath, revision)
getSubversionVersion returns the Subversion version of the file given by fullPath and revision.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision, or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getCvsVersion
def getSubversionVersion(self, fullPath, revision):
"""getSubversionVersion returns the Subversion version of the file given by fullPath and revision.
Inputs:
fullPath - full path to the Madrigal file in Subversion
(example: 'madroot/metadata/siteTab.txt')
revision - revision string (example '1445')
Returns: the Subversion version of the file given by fullPath and revision,
or None if not found
Affects: Nothing
Exceptions: None
Simply calls equivalent method getCvsVersion
"""
return(self.getCvsVersion(fullPath, revision))
def getTypeMetadata(
self, siteId)
getTypeMetadata returns the typeTab.txt file from siteId as a string.
Inputs: None
Returns: the typeTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
def getTypeMetadata(self, siteId):
"""getTypeMetadata returns the typeTab.txt file from siteId as a string.
Inputs: None
Returns: the typeTab.txt file from siteId as a string, or None if not found
Affects: Nothing
Exceptions: None
"""
fileStr = self.__getMetadata(siteId, self.__typeTab)
return fileStr