code: def createCollection(self, className = 'Collection', **colProperties) :
          
  
          colClass = COL.getCollectionClass(className)
  
          if len(colProperties) > 0 :
              colProperties = dict(colProperties)
          else :
              try :
                  colProperties = dict(colClass._properties)
              except AttributeError :
                  colProperties = {}
  
          if className != 'Collection' and className != 'Edges' :
              colProperties['name'] = className
          else :
              if 'name' not in colProperties :
                  raise ValueError("a 'name' argument mush be supplied if you want to create a generic collection")
  
          if colProperties['name'] in self.collections :
              raise CreationError("Database %s already has a collection named %s" % (self.name, colProperties['name']) )
  
          if issubclass(colClass, COL.Edges) or colClass.__class__ is COL.Edges:
              colProperties["type"] = CONST.COLLECTION_EDGE_TYPE
          else :
              colProperties["type"] = CONST.COLLECTION_DOCUMENT_TYPE
  
          payload = json.dumps(colProperties, default=str)
          r = self.connection.session.post(self.collectionsURL, data = payload)
          data = r.json()
  
          if r.status_code == 200 and not data["error"] :
              col = colClass(self, data)
              self.collections[col.name] = col
              return self.collections[col.name]
          else :
              raise CreationError(data["errorMessage"], data)
docs: Creates a collection and returns it.
          ClassName the name of a class inheriting from Collection or Egdes, it can also be set to 'Collection' or 'Edges' in order to create untyped collections of documents or edges.
          Use colProperties to put things such as 'waitForSync = True' (see ArangoDB's doc
          for a full list of possible arugments). If a '_properties' dictionary is defined in the collection schema, arguments to this function overide it