Source subclasses are responsible for generating an integer value given an open source project’s source URL.
Abstract base class for all sources. New sources must be derived from this class and implement the records method.
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': {}}
Raised when SourcesContext.with_features() was called but no
records were yielded.
Helper to print a diff of the features requested and the features available in unittest diff format
alias of NoRecordsWithMatchingFeatures
alias of SourcesContext
alias of BaseSource
Restricts access to a subset of records during iteration based on their keys.
alias of SubsetSourcesContext
Restricts access to a subset of records during iteration based on a validation function.
alias of ValidationSourcesContext