MCPcopy
hub / github.com/gunthercox/ChatterBot / create

Method create

chatterbot/storage/sql_storage.py:258–316  ·  view source on GitHub ↗

Creates a new statement matching the keyword arguments specified. Returns the created statement.

(
        self,
        text,
        in_response_to=None,
        tags=None,
        search_text=None,
        search_in_response_to=None,
        **kwargs
    )

Source from the content-addressed store, hash-verified

256 session.close()
257
258 def create(
259 self,
260 text,
261 in_response_to=None,
262 tags=None,
263 search_text=None,
264 search_in_response_to=None,
265 **kwargs
266 ):
267 """
268 Creates a new statement matching the keyword arguments specified.
269 Returns the created statement.
270 """
271 Statement = self.get_model('statement')
272 Tag = self.get_model('tag')
273
274 session = self.Session()
275
276 if search_text is None:
277 if self.raise_on_missing_search_text:
278 raise Exception('generate a search_text value')
279
280 if search_in_response_to is None and in_response_to is not None:
281 if self.raise_on_missing_search_text:
282 raise Exception('generate a search_in_response_to value')
283
284 statement = Statement(
285 text=text,
286 in_response_to=in_response_to,
287 search_text=search_text,
288 search_in_response_to=search_in_response_to,
289 **kwargs
290 )
291
292 tags = frozenset(tags) if tags else frozenset()
293
294 # Batch query tags
295 if tags:
296 existing_tags = session.query(Tag).filter(Tag.name.in_(tags)).all()
297 existing_tag_dict = {tag.name: tag for tag in existing_tags}
298
299 for tag_name in tags:
300 tag = existing_tag_dict.get(tag_name)
301 if not tag:
302 # Create the tag if it doesn't exist
303 tag = Tag(name=tag_name)
304 statement.tags.append(tag)
305
306 session.add(statement)
307
308 session.commit()
309
310 session.refresh(statement)
311
312 statement_object = self.model_to_object(statement)
313
314 session.close()
315

Callers 1

__init__Method · 0.45

Calls 7

model_to_objectMethod · 0.95
StatementClass · 0.90
TagClass · 0.90
get_modelMethod · 0.80
getMethod · 0.80
filterMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected