mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-14 22:37:16 +01:00
Move core.File to obs_scm.File
This commit is contained in:
parent
1909c141d0
commit
b5a5143da6
55
osc/core.py
55
osc/core.py
@ -53,6 +53,7 @@ from . import oscerr
|
||||
from . import output
|
||||
from . import store as osc_store
|
||||
from .connection import http_request, http_GET, http_POST, http_PUT, http_DELETE
|
||||
from .obs_scm import File
|
||||
from .output import sanitize_text
|
||||
from .store import Store
|
||||
from .util import xdg
|
||||
@ -263,60 +264,6 @@ def revision_is_empty(rev: Union[None, str, int]):
|
||||
return rev in (None, "")
|
||||
|
||||
|
||||
@total_ordering
|
||||
class File:
|
||||
"""represent a file, including its metadata"""
|
||||
|
||||
def __init__(self, name, md5, size, mtime, skipped=False):
|
||||
self.name = name
|
||||
self.md5 = md5
|
||||
self.size = size
|
||||
self.mtime = mtime
|
||||
self.skipped = skipped
|
||||
|
||||
def __repr__(self):
|
||||
return self.name
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, str):
|
||||
return self.name == other
|
||||
self_data = (self.name, self.md5, self.size, self.mtime, self.skipped)
|
||||
other_data = (other.name, other.md5, other.size, other.mtime, other.skipped)
|
||||
return self_data == other_data
|
||||
|
||||
def __lt__(self, other):
|
||||
self_data = (self.name, self.md5, self.size, self.mtime, self.skipped)
|
||||
other_data = (other.name, other.md5, other.size, other.mtime, other.skipped)
|
||||
return self_data < other_data
|
||||
|
||||
@classmethod
|
||||
def from_xml_node(cls, node):
|
||||
assert node.tag == "entry"
|
||||
kwargs = {
|
||||
"name": node.get("name"),
|
||||
"md5": node.get("md5"),
|
||||
"size": int(node.get("size")),
|
||||
"mtime": int(node.get("mtime")),
|
||||
"skipped": "skipped" in node.attrib,
|
||||
}
|
||||
return cls(**kwargs)
|
||||
|
||||
def to_xml_node(self, parent_node):
|
||||
attributes = {
|
||||
"name": self.name,
|
||||
"md5": self.md5,
|
||||
"size": str(int(self.size)),
|
||||
"mtime": str(int(self.mtime)),
|
||||
}
|
||||
if self.skipped:
|
||||
attributes["skipped"] = "true"
|
||||
new_node = ET.SubElement(parent_node, "entry", attributes)
|
||||
return new_node
|
||||
|
||||
|
||||
class Serviceinfo:
|
||||
"""Source service content
|
||||
"""
|
||||
|
1
osc/obs_scm/__init__.py
Normal file
1
osc/obs_scm/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .file import File
|
57
osc/obs_scm/file.py
Normal file
57
osc/obs_scm/file.py
Normal file
@ -0,0 +1,57 @@
|
||||
from functools import total_ordering
|
||||
|
||||
from ..util.xml import ET
|
||||
|
||||
|
||||
@total_ordering
|
||||
class File:
|
||||
"""represent a file, including its metadata"""
|
||||
|
||||
def __init__(self, name, md5, size, mtime, skipped=False):
|
||||
self.name = name
|
||||
self.md5 = md5
|
||||
self.size = size
|
||||
self.mtime = mtime
|
||||
self.skipped = skipped
|
||||
|
||||
def __repr__(self):
|
||||
return self.name
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, str):
|
||||
return self.name == other
|
||||
self_data = (self.name, self.md5, self.size, self.mtime, self.skipped)
|
||||
other_data = (other.name, other.md5, other.size, other.mtime, other.skipped)
|
||||
return self_data == other_data
|
||||
|
||||
def __lt__(self, other):
|
||||
self_data = (self.name, self.md5, self.size, self.mtime, self.skipped)
|
||||
other_data = (other.name, other.md5, other.size, other.mtime, other.skipped)
|
||||
return self_data < other_data
|
||||
|
||||
@classmethod
|
||||
def from_xml_node(cls, node):
|
||||
assert node.tag == "entry"
|
||||
kwargs = {
|
||||
"name": node.get("name"),
|
||||
"md5": node.get("md5"),
|
||||
"size": int(node.get("size")),
|
||||
"mtime": int(node.get("mtime")),
|
||||
"skipped": "skipped" in node.attrib,
|
||||
}
|
||||
return cls(**kwargs)
|
||||
|
||||
def to_xml_node(self, parent_node):
|
||||
attributes = {
|
||||
"name": self.name,
|
||||
"md5": self.md5,
|
||||
"size": str(int(self.size)),
|
||||
"mtime": str(int(self.mtime)),
|
||||
}
|
||||
if self.skipped:
|
||||
attributes["skipped"] = "true"
|
||||
new_node = ET.SubElement(parent_node, "entry", attributes)
|
||||
return new_node
|
Loading…
x
Reference in New Issue
Block a user