def _f_list_parser(fl, ref_frame):
 def flist_iter():
  for pair in fl:
   (obj, force) = pair
   if isinstance(obj, ReferenceFrame):
    (yield (obj.ang_vel_in(ref_frame), force))
   elif isinstance(obj, Point):
    (yield (obj.vel(ref_frame), force))
   else:
    raise TypeError('First entry in each forcelist pair must be a point or frame.')
 if (not fl):
  (vel_list, f_list) = ((), ())
 else:
  unzip = (lambda l: (list(zip(*l)) if l[0] else [(), ()]))
  (vel_list, f_list) = unzip(list(flist_iter()))
 return (vel_list, f_list)

def _f_list_parser ( fl , ref_frame ) : def flist_iter ( ) : for pair in fl : ( obj , force ) = pair if isinstance ( obj , ReferenceFrame ) : ( yield ( obj . ang_vel_in ( ref_frame ) , force ) ) elif isinstance ( obj , Point ) : ( yield ( obj . vel ( ref_frame ) , force ) ) else : raise TypeError ( 'First entry in each forcelist pair must be a point or frame.' ) if ( not fl ) : ( vel_list , f_list ) = ( ( ) , ( ) ) else : unzip = ( lambda l : ( list ( zip ( * l ) ) if l [ 0 ] else [ ( ) , ( ) ] ) ) ( vel_list , f_list ) = unzip ( list ( flist_iter ( ) ) ) return ( vel_list , f_list )
parses the provided forcelist composed of items of the form .