Browse Source

Add a metadata version field

tags/v1.0
JustAnotherArchivist 1 year ago
parent
commit
a361fe54e5
2 changed files with 12 additions and 0 deletions
  1. +11
    -0
      codearchiver/core.py
  2. +1
    -0
      codearchiver/modules/git.py

+ 11
- 0
codearchiver/core.py View File

@@ -88,6 +88,7 @@ class Metadata(list[tuple[str, str]]):
fields: tuple[MetadataField] = (
MetadataField('codearchiver version', required = True, repeatable = False),
MetadataField('Module', required = True, repeatable = False),
MetadataField('Metadata version', required = True, repeatable = False),
MetadataField('ID', required = True, repeatable = False),
MetadataField('Input URL', required = True, repeatable = False),
MetadataField('Filename', required = True, repeatable = False),
@@ -96,6 +97,9 @@ class Metadata(list[tuple[str, str]]):
)
'''The fields for this metadata collection'''

version: int = 0
'''Version, incremented on every backward-incompatible change'''

_allFieldsCache: typing.Optional[tuple[MetadataField]] = None

def append(self, *args):
@@ -394,6 +398,13 @@ class Module(metaclass = ModuleMeta):
idx = type(self).MetadataClass()
idx.append('codearchiver version', codearchiver.version.__version__)
idx.append('Module', type(self).name)
metadataVersions = []
for cls in reversed(type(self).MetadataClass.mro()):
version = cls.__dict__.get('version')
if version is None:
continue
metadataVersions.append(f'{cls.__module__}.{cls.__qualname__}/{version}')
idx.append('Metadata version', ' '.join(metadataVersions))
idx.append('ID', self._id)
idx.append('Input URL', self._url)
idx.append('Filename', filename)


+ 1
- 0
codearchiver/modules/git.py View File

@@ -20,6 +20,7 @@ class GitMetadata(codearchiver.core.Metadata):
codearchiver.core.MetadataField(key = 'Root commit', required = True, repeatable = True),
codearchiver.core.MetadataField(key = 'Commit', required = False, repeatable = True),
)
version = 0


class Git(codearchiver.core.Module):


Loading…
Cancel
Save