GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — develop ( 35542f...45798c )
by Plexxi
12:38 queued 06:20
created

_get_human_time()   F

Complexity

Conditions 13

Size

Total Lines 50

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 13
c 2
b 0
f 0
dl 0
loc 50
rs 2.6692

How to fix   Complexity   

Complexity

Complex classes like _get_human_time() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
# Licensed to the StackStorm, Inc ('StackStorm') under one or more
2
# contributor license agreements.  See the NOTICE file distributed with
3
# this work for additional information regarding copyright ownership.
4
# The ASF licenses this file to You under the Apache License, Version 2.0
5
# (the "License"); you may not use this file except in compliance with
6
# the License.  You may obtain a copy of the License at
7
#
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
# limitations under the License.
15
16
import datetime
17
18
__all__ = [
19
    'to_human_time_from_seconds'
20
]
21
22
23
def to_human_time_from_seconds(seconds):
24
    """
25
    Given a time value in seconds, this function returns
26
    a fuzzy version like 3m5s.
27
28
    :param time_seconds: Time specified in seconds.
29
    :type time_seconds: ``int`` or ``long`` or ``float``
30
31
    :rtype: ``str``
32
    """
33
    assert (isinstance(seconds, int) or isinstance(seconds, long) or
0 ignored issues
show
Comprehensibility Best Practice introduced by
Undefined variable 'long'
Loading history...
34
            isinstance(seconds, float))
35
36
    return _get_human_time(seconds)
37
38
39
def _get_human_time(seconds):
40
    """
41
    Takes number of seconds as input and returns a string of form '1h3m5s'.
42
43
    :param seconds: Number of seconds.
44
    :type seconds: ``int`` or ``long`` or ``float``
45
46
    :rtype: ``str``
47
    """
48
49
    if seconds is None:
50
        return None
51
52
    if seconds == 0:
53
        return '0s'
54
55
    if seconds < 1:
56
        return '%s\u03BCs' % seconds  # Microseconds
57
58
    if isinstance(seconds, float):
59
        seconds = long(round(seconds))  # Let's lose microseconds.
0 ignored issues
show
Comprehensibility Best Practice introduced by
Undefined variable 'long'
Loading history...
60
61
    timedelta = datetime.timedelta(seconds=seconds)
62
    offset_date = datetime.datetime(1, 1, 1) + timedelta
63
64
    years = offset_date.year - 1
65
    days = offset_date.day - 1
66
    hours = offset_date.hour
67
    mins = offset_date.minute
68
    secs = offset_date.second
69
70
    time_parts = [years, days, hours, mins, secs]
71
72
    first_non_zero_pos = next((i for i, x in enumerate(time_parts) if x), None)
73
74
    if first_non_zero_pos is None:
75
        return '0s'
76
    else:
77
        time_parts = time_parts[first_non_zero_pos:]
78
79
    if len(time_parts) == 1:
80
        return '%ss' % tuple(time_parts)
81
    elif len(time_parts) == 2:
82
        return '%sm%ss' % tuple(time_parts)
83
    elif len(time_parts) == 3:
84
        return '%sh%sm%ss' % tuple(time_parts)
85
    elif len(time_parts) == 4:
86
        return '%sd%sh%sm%ss' % tuple(time_parts)
87
    elif len(time_parts) == 5:
88
        return '%sy%sd%sh%sm%ss' % tuple(time_parts)
89