mirror of
https://github.com/clearml/clearml
synced 2025-02-12 07:35:08 +00:00
Fix windows support for time stamp based sorting
This commit is contained in:
parent
79cf18b2b8
commit
8f0bec5861
@ -1,7 +1,7 @@
|
|||||||
import getpass
|
import getpass
|
||||||
import re
|
import re
|
||||||
from _socket import gethostname
|
from _socket import gethostname
|
||||||
from datetime import datetime
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
from ..backend_api.services import projects
|
from ..backend_api.services import projects
|
||||||
from ..debugging.log import get_logger
|
from ..debugging.log import get_logger
|
||||||
@ -25,6 +25,11 @@ def get_or_create_project(session, project_name, description=None):
|
|||||||
return res.response.id
|
return res.response.id
|
||||||
|
|
||||||
|
|
||||||
|
# Hack for supporting windows
|
||||||
|
def get_epoch_beginning_of_time(tzinfo=None):
|
||||||
|
return datetime(1970, 1, 1, tzinfo=tzinfo if tzinfo else timezone.utc)
|
||||||
|
|
||||||
|
|
||||||
def get_single_result(entity, query, results, log=None, show_results=10, raise_on_error=True, sort_by_date=True):
|
def get_single_result(entity, query, results, log=None, show_results=10, raise_on_error=True, sort_by_date=True):
|
||||||
if not results:
|
if not results:
|
||||||
if not raise_on_error:
|
if not raise_on_error:
|
||||||
@ -39,12 +44,13 @@ def get_single_result(entity, query, results, log=None, show_results=10, raise_o
|
|||||||
log.warning('More than one {entity} found when searching for `{query}`'
|
log.warning('More than one {entity} found when searching for `{query}`'
|
||||||
' (showing first {show_results} {entity}s follow)'.format(**locals()))
|
' (showing first {show_results} {entity}s follow)'.format(**locals()))
|
||||||
if sort_by_date:
|
if sort_by_date:
|
||||||
|
relative_time = get_epoch_beginning_of_time()
|
||||||
# sort results based on timestamp and return the newest one
|
# sort results based on timestamp and return the newest one
|
||||||
if hasattr(results[0], 'last_update'):
|
if hasattr(results[0], 'last_update'):
|
||||||
results = sorted(results, key=lambda x: int(x.last_update.strftime('%s')
|
results = sorted(results, key=lambda x: int((x.last_update - relative_time).total_seconds()
|
||||||
if x.last_update else 0), reverse=True)
|
if x.last_update else 0), reverse=True)
|
||||||
elif hasattr(results[0], 'created'):
|
elif hasattr(results[0], 'created'):
|
||||||
results = sorted(results, key=lambda x: int(x.created.strftime('%s')
|
results = sorted(results, key=lambda x: int((x.created - relative_time).total_seconds()
|
||||||
if x.created else 0), reverse=True)
|
if x.created else 0), reverse=True)
|
||||||
|
|
||||||
for i, obj in enumerate(o if isinstance(o, dict) else o.to_dict() for o in results[:show_results]):
|
for i, obj in enumerate(o if isinstance(o, dict) else o.to_dict() for o in results[:show_results]):
|
||||||
|
Loading…
Reference in New Issue
Block a user