Skip to content

aresnasa/Python-Cookbook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Python-Cookbook

#iterator.py #reprint from https://github.com/craigds/django-livesettings/blob/master/livesettings/utils.py import sys import types import os

def can_loop_over(maybe): """Test value to see if it is list like""" try: iter(maybe) except TypeError: return False return True

def is_list_or_tuple(maybe): return isinstance(maybe, (types.TupleType, types.ListType))

def is_scalar(maybe): """Test to see value is a string, an int, or some other scalar type""" return is_string_like(maybe) or not can_loop_over(maybe)

def is_string_like(maybe): """Test value to see if it acts like a string""" try: maybe+"" except TypeError: return False return True

def flatten_list(sequence, scalarp=is_scalar, result=None): """flatten out a list by putting sublist entries in the main list""" if result is None: result = []

for item in sequence:
    if scalarp(item):
        result.append(item)
    else:
        flatten_list(item, scalarp, result)

def load_module(module): """Load a named python module.""" try: module = sys.modules[module] except KeyError: import(module) module = sys.modules[module] return module

def get_flat_list(sequence): """flatten out a list and return the flat list""" flat = [] flatten_list(sequence, result=flat) return flat

def url_join(*args): """Join any arbitrary strings into a forward-slash delimited string. Do not strip leading / from first element, nor trailing / from last element.

This function can take lists as arguments, flattening them appropriately.

example:
url_join('one','two',['three','four'],'five') => 'one/two/three/four/five'
"""
if len(args) == 0:
    return ""

args = get_flat_list(args)

if len(args) == 1:
    return str(args[0])

else:
    args = [str(arg).replace("\\", "/") for arg in args]

    work = [args[0]]
    for arg in args[1:]:
        if arg.startswith("/"):
            work.append(arg[1:])
        else:
            work.append(arg)

    joined = reduce(os.path.join, work)

return joined.replace("\\", "/")

About

iterator.py

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published