alias of DataFlowSourceConfig
alias of DataFlowSourceContext
By default, all properties of a config object are immutable. If you would like to mutate immutable properties, you must explicitly call this method using it as a context manager.
Examples
>>> from dffml import config
>>>
>>> @config
... class MyConfig:
... C: int
>>>
>>> config = MyConfig(C=2)
>>> with config.no_enforce_immutable():
... config.C = 1
Get a record from the source or add it if it doesn’t exist.
Examples
>>> import asyncio
>>> from dffml import *
>>>
>>> async def main():
... async with MemorySource(records=[Record("example", data=dict(features=dict(dead="beef")))]) as source:
... # Open, update, and close
... async with source() as ctx:
... example = await ctx.record("example")
... # Let's also try calling `record` for a record that doesnt exist.
... one = await ctx.record("one")
... await ctx.update(one)
... async for record in ctx.records():
... print(record.export())
>>>
>>> asyncio.run(main())
{'key': 'example', 'features': {'dead': 'beef'}, 'extra': {}}
{'key': 'one', 'extra': {}}
Returns a list of records retrieved from self.src
Examples
>>> import asyncio
>>> from dffml import *
>>>
>>> async def main():
... async with MemorySource(records=[Record("example", data=dict(features=dict(dead="beef")))]) as source:
... async with source() as ctx:
... async for record in ctx.records():
... print(record.export())
>>>
>>> asyncio.run(main())
{'key': 'example', 'features': {'dead': 'beef'}, 'extra': {}}
Updates a record for a source
Examples
>>> import asyncio
>>> from dffml import *
>>>
>>> async def main():
... async with MemorySource(records=[]) as source:
... # Open, update, and close
... async with source() as ctx:
... example = Record("one", data=dict(features=dict(feed="face")))
... # ... Update one into our records ...
... await ctx.update(example)
... # Let's check out our records after calling `record` and `update`.
... async for record in ctx.records():
... print(record.export())
>>>
>>> asyncio.run(main())
{'key': 'one', 'features': {'feed': 'face'}, 'extra': {}}