예제 #1
0
 def test_curry(self):
     a1 = F.curry(add)(1)
     self.assertEqual(a1(2, 3), 6)
     a2 = F.curry(a1)(3)
     self.assertEqual(a2(4), 8)
     a3 = F.curry(add)(1, 1)
     self.assertEqual(a3(1), 3)
예제 #2
0
def acm_filter(obj, filter_cluster='.*', filter_vhost='.*', filter_lbname='.*', filter_route='.*', filter_worker='.*'):
  '''Apply given filters to given acm object'''
  f=curry(acm_filter, \
          filter_cluster=filter_cluster, \
          filter_vhost=filter_vhost, \
	  filter_lbname=filter_lbname, \
	  filter_route=filter_route, \
	  filter_worker=filter_worker)
  if isinstance(obj, list):
    map(f, obj)

  if isinstance(obj, Cluster):
    match = re.search(filter_cluster, obj.name)
    if match is None:
      obj.setMark(True)
    f(obj.servers)
  elif isinstance(obj, Server):
    f(obj.vhosts)
  elif isinstance(obj, VHost):
    match = re.search(filter_vhost, obj.name)
    if match is None:
      obj.setMark(True)
    f(obj.lbs)
  elif isinstance(obj, LoadBalancer):
    match = re.search(filter_lbname, obj.name)
    if match is None:
      obj.setMark(True)
    f(obj.workers)
  elif isinstance(obj, Worker):
    match_url   = re.search(filter_worker, obj.Worker_URL)
    match_route = re.search(filter_route, obj.Route)
    if match_url is None or match_route is None:
      obj.setMark(True)
예제 #3
0
def acm_filter(obj, filter_cluster='.*', filter_vhost='.*', filter_lbname='.*', filter_route='.*', filter_worker='.*'):
  '''Apply given filters to given acm object'''
  f=curry(acm_filter, \
          filter_cluster=filter_cluster, \
          filter_vhost=filter_vhost, \
	  filter_lbname=filter_lbname, \
	  filter_route=filter_route, \
	  filter_worker=filter_worker)
  if isinstance(obj, list):
    map(f, obj)

  if isinstance(obj, Cluster):
    match = re.search(filter_cluster, obj.name)
    if match is None:
      obj.setMark(True)
    f(obj.servers)
  elif isinstance(obj, Server):
    f(obj.vhosts)
  elif isinstance(obj, VHost):
    match = re.search(filter_vhost, obj.name)
    if match is None:
      obj.setMark(True)
    f(obj.lbs)
  elif isinstance(obj, LoadBalancer):
    match = re.search(filter_lbname, obj.name)
    if match is None:
      obj.setMark(True)
    f(obj.workers)
  elif isinstance(obj, Worker):
    match_url   = re.search(filter_worker, obj.Worker_URL)
    match_route = re.search(filter_route, obj.Route)
    if match_url is None or match_route is None:
      obj.setMark(True)
예제 #4
0
def test_curry():
    def args(*a):
        return a

    cargs = functional.curry(args, 5)
    cargsab = cargs('a')('b')
    assert cargsab('c')('d')('e') == ('a', 'b', 'c', 'd', 'e')
    assert cargsab('x')('y')('z') == ('a', 'b', 'x', 'y', 'z')
    assert cargsab('c')('d')('e') == ('a', 'b', 'c', 'd', 'e')
    assert cargsab('x')('y')('z') == ('a', 'b', 'x', 'y', 'z')

    def add(a, b):
        return a + b

    cadd = functional.curry(add)
    assert cadd(10)(5) == 15 and cadd(20)(5) == 25

    assert functional.map(functional.curry(add)(10),
                          functional.range(1, 11)) == \
           [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]
예제 #5
0
def __acm_apply_func(obj, func=__myPrint):
  ''' Apply a function to all instances of an acm object'''
  f = curry(__acm_apply_func, func=func)
  if isinstance(obj, list):
    map(f, obj)
  elif not obj.mark:
    func(obj)

  if isinstance(obj, Cluster):
    f(obj.servers)
  elif isinstance(obj, Server):
    f(obj.vhosts)
  elif isinstance(obj, VHost):
    f(obj.lbs)
  elif isinstance(obj, LoadBalancer):
    f(obj.workers)
예제 #6
0
def __acm_apply_func(obj, func=__myPrint):
  ''' Apply a function to all instances of an acm object'''
  f = curry(__acm_apply_func, func=func)
  if isinstance(obj, list):
    map(f, obj)
  elif not obj.mark:
    func(obj)

  if isinstance(obj, Cluster):
    f(obj.servers)
  elif isinstance(obj, Server):
    f(obj.vhosts)
  elif isinstance(obj, VHost):
    f(obj.lbs)
  elif isinstance(obj, LoadBalancer):
    f(obj.workers)
예제 #7
0
def acm_set(obj, lf=None, ls=None, wr=None, rr=None, dw=None):
  '''Set values on an acm object'''
  f = curry(__set_val, lf=lf, ls=ls, wr=wr, rr=rr, dw=dw)
  __acm_apply_func(obj, f)
예제 #8
0
def acm_set(obj, lf=None, ls=None, wr=None, rr=None, dw=None, w_lf=None, w_ls=None, w_wr=None, w_rr=None, w_status_I=None, w_status_N=None, w_status_D=None, w_status_H=None):
  '''Set values on an acm object'''
  f = curry(__set_val, lf=lf, ls=ls, wr=wr, rr=rr, dw=dw, w_lf=w_lf, w_ls=w_ls, w_wr=w_wr, w_rr=w_rr, w_status_I=w_status_I, w_status_N=w_status_N, w_status_D=w_status_D, w_status_H=w_status_H)
  __acm_apply_func(obj, f)
예제 #9
0
def acm_set(obj, lf=None, ls=None, wr=None, rr=None, dw=None):
  '''Set values on an acm object'''
  f = curry(__set_val, lf=lf, ls=ls, wr=wr, rr=rr, dw=dw)
  __acm_apply_func(obj, f)
예제 #10
0
파일: poc.py 프로젝트: zhengjianzhou/jjzz
from maybe import Maybe
from data import DATA_Num, DATA_Str, DATA_List
from my_funcs import *

DATA_1 = Maybe(DATA_Num)
print '--------traditional--------'
run_f1 = lift_n_resolve_fs(*[sq,rt,sq,cube])
run_f2 = lift_n_resolve_fs(*[sq,rt,sq,rt_m])
print run_f1 (DATA_1)
print run_f2 (DATA_1)
print '---------------------------'

print '--------functional---------'
print Functional()(sq)(DATA_1)
print Functional() >> sq >> cube >> sq >> DATA_1
print Functional() >> curry(lambda x,y:x+y, 5) >> sq >> DATA_1
print Functional(False)(rt_m)(rt_m)(rt_m)(rt_m)(Maybe(-4))
print Functional(False)(rt_m)(DATA_1)
print Functional().unlift_all()(rt_m)(DATA_1)
print '---------------------------'

print '--------functional-break---'
print Functional()(cube)(rt)(cube)(DATA_1)
print '---------------------------'

print '--------functional-generic-'
print Functional()(cube)(lambda x:x*x)(lambda x:x-1)(DATA_1)
print '---------------------------'

def print_state(a): print '\=> SIDE EFFECT: ', a
print '--------side effect--------'