def setup_variables(): '''Initialise variables''' variables = DefaultAttrDict(str) # Load all environment variables variables.update(os.environ) # GRAMEXPATH is the Gramex root directory variables['GRAMEXPATH'] = _gramex_path # GRAMEXAPPS is the Gramex apps directory variables['GRAMEXAPPS'] = os.path.join(_gramex_path, 'apps') # GRAMEXHOST is the hostname variables['GRAMEXHOST'] = socket.gethostname() # GRAMEXDATA varies based on OS if 'GRAMEXDATA' not in variables: if sys.platform.startswith('linux') or sys.platform == 'cygwin': variables['GRAMEXDATA'] = os.path.expanduser( '~/.config/gramexdata') elif sys.platform == 'win32': variables['GRAMEXDATA'] = os.path.join(variables['LOCALAPPDATA'], 'Gramex Data') elif sys.platform == 'darwin': variables['GRAMEXDATA'] = os.path.expanduser( '~/Library/Application Support/Gramex Data') else: variables['GRAMEXDATA'] = os.path.abspath('.') app_log.warning('$GRAMEXDATA set to %s for OS %s', variables['GRAMEXDATA'], sys.platform) return variables
def test_defaultdict_counter(self): 'DefaultAttrDict as a list generator' ad = DefaultAttrDict(int) self.assertEqual(ad['x'], 0) ad.x += 1 ad.y += 2 ad.z = ad.z + 3 self.assertEqual(ad, {'x': 1, 'y': 2, 'z': 3})
def test_defaultdict_with_set(self): 'DefaultAttrDict as a set generator' ad = DefaultAttrDict(set) self.assertEqual(ad['x'], set()) self.assertEqual(ad['y'], set()) self.assertEqual(ad, {'x': set(), 'y': set()}) self.assertFalse('z' in ad) ad = DefaultAttrDict(set) self.assertEqual(ad.x, set()) self.assertEqual(ad.y, set()) self.assertEqual(ad, {'x': set(), 'y': set()}) self.assertFalse('z' in ad)
def test_defaultdict_with_list(self): 'DefaultAttrDict as a list generator' ad = DefaultAttrDict(list) self.assertEqual(ad['x'], []) self.assertEqual(ad['y'], []) self.assertEqual(ad, {'x': [], 'y': []}) self.assertFalse('z' in ad) ad = DefaultAttrDict(list) self.assertEqual(ad.x, []) self.assertEqual(ad.y, []) self.assertEqual(ad, {'x': [], 'y': []}) self.assertFalse('z' in ad)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) with warnings.catch_warnings(): warnings.simplefilter("ignore") self.web_api = Client( proxy=self.proxies.get("https") if self.proxies else None, auto_patch=True, drop_incompat_keys=False) self.end_cursors = DefaultAttrDict(lambda: None)
def meta_headers(url, params): r = self.get(url, params=params) result = DefaultAttrDict(AttrDict) for header_name, value in r.headers.items(): name = header_name.lower() if name.startswith('fh-'): parts = name.split('-') dataset_name, key = '-'.join(parts[1:-1]), parts[-1] result[dataset_name][key] = json.loads(value) return result
def markdown_index(folder): result = DefaultAttrDict(set) for root, file in readme_files(folder): dirpath = os.path.relpath(root, '.').replace(os.path.sep, '/') with io.open(os.path.join(root, file), encoding='utf-8') as handle: md = markdown.Markdown(extensions=[ 'markdown.extensions.toc', 'markdown.extensions.meta', IndexerExtension(), ]) md.convert(handle.read()) for frag, text in md.index: result[dirpath, frag].add(text) return result
def update_nodes(self): nodes = [] flat = self._flatten(self.nodes) for item_key, item_values in flat.iteritems(): for index, item_value in enumerate(item_values): if len(nodes) <= index: nodes.append(DefaultAttrDict(dict)) if '.' in item_key: keys = item_key.split('.') nodes[index][keys[0]][keys[1]] = item_value else: nodes[index][item_key] = item_value self.inv.nodes = nodes self.dbase.dump_inventory(self.inv)
def markdown_index(folder): result = DefaultAttrDict(set) for root, file in readme_files(folder): basename = os.path.basename(root) if basename == '.': continue with io.open(os.path.join(root, file), encoding='utf-8') as handle: md = markdown.Markdown(extensions=[ 'markdown.extensions.toc', 'markdown.extensions.meta', IndexerExtension(), ]) md.convert(handle.read()) for frag, text in md.index: result[basename, frag].add(text) return result
def tree(): return DefaultAttrDict(tree)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._callbacks = DefaultAttrDict(list)