sonntagsgesicht/businessdate

View on GitHub
businessdate/businessperiod.py

Summary

Maintainability
F
5 days
Test Coverage

Function __init__ has a Cognitive Complexity of 27 (exceeds 5 allowed). Consider refactoring.
Open

    def __init__(self, period='', years=0, quarters=0, months=0, weeks=0, days=0, businessdays=0):
        """ class to store and calculate date periods as combinations of days, weeks, years etc.

        :param str period: encoding a business period.
         Such is given by a sequence of digits as :class:`int` followed by a :class:`char` -
Severity: Minor
Found in businessdate/businessperiod.py - About 3 hrs to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

BusinessPeriod has 26 functions (exceeds 20 allowed). Consider refactoring.
Open

class BusinessPeriod(object):

    def __init__(self, period='', years=0, quarters=0, months=0, weeks=0, days=0, businessdays=0):
        """ class to store and calculate date periods as combinations of days, weeks, years etc.

Severity: Minor
Found in businessdate/businessperiod.py - About 3 hrs to fix

    File businessperiod.py has 251 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    # -*- coding: utf-8 -*-
    
    # businessdate
    # ------------
    # Python library for generating business dates for fast date operations
    Severity: Minor
    Found in businessdate/businessperiod.py - About 2 hrs to fix

      Function _parse_ymd has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
      Open

          def _parse_ymd(cls, period):
              # can even parse strings like '-1B-2Y-4Q+5M' but also '0B', '-1Y2M3D' as well.
              period = period.upper().replace(' ', '')
              period = period.replace('BUSINESSDAYS', 'B')
              period = period.replace('YEARS', 'Y')
      Severity: Minor
      Found in businessdate/businessperiod.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function __str__ has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
      Open

          def __str__(self):
      
              if self.businessdays:
                  period_str = str(self.businessdays) + 'B'
              else:
      Severity: Minor
      Found in businessdate/businessperiod.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function is_businessperiod has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
      Open

          def is_businessperiod(cls, period):
              """ returns true if the argument can be understood as :class:`BusinessPeriod` """
              if period is None:
                  return False
              if isinstance(period, (int, float, list, set, dict, tuple)):
      Severity: Minor
      Found in businessdate/businessperiod.py - About 55 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function __cmp__ has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
      Open

          def __cmp__(self, other):
              other = self.__class__() if other == 0 else other
              if not isinstance(other, BusinessPeriod):
                  other = BusinessPeriod(other)
              if self.businessdays:
      Severity: Minor
      Found in businessdate/businessperiod.py - About 55 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function __init__ has 7 arguments (exceeds 4 allowed). Consider refactoring.
      Open

          def __init__(self, period='', years=0, quarters=0, months=0, weeks=0, days=0, businessdays=0):
      Severity: Major
      Found in businessdate/businessperiod.py - About 50 mins to fix

        Avoid too many return statements within this function.
        Open

                    return True
        Severity: Major
        Found in businessdate/businessperiod.py - About 30 mins to fix

          Avoid too many return statements within this function.
          Open

                  return False
          Severity: Major
          Found in businessdate/businessperiod.py - About 30 mins to fix

            Avoid too many return statements within this function.
            Open

                            return False
            Severity: Major
            Found in businessdate/businessperiod.py - About 30 mins to fix

              Avoid too many return statements within this function.
              Open

                              return False
              Severity: Major
              Found in businessdate/businessperiod.py - About 30 mins to fix

                Similar blocks of code found in 2 locations. Consider refactoring.
                Open

                    def min_days(self):
                        if self._months < 0 :
                            sgn = -1
                            days_in_month = 28, 31, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 # days from feb to jan backwards
                        else:
                Severity: Major
                Found in businessdate/businessperiod.py and 1 other location - About 1 day to fix
                businessdate/businessperiod.py on lines 292..305

                Duplicated Code

                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                Tuning

                This issue has a mass of 162.

                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                Refactorings

                Further Reading

                Similar blocks of code found in 2 locations. Consider refactoring.
                Open

                    def max_days(self):
                        if self._months < 0:
                            sgn = -1
                            days_in_month = 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28  # days from mar to feb forwards
                        else:
                Severity: Major
                Found in businessdate/businessperiod.py and 1 other location - About 1 day to fix
                businessdate/businessperiod.py on lines 307..319

                Duplicated Code

                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                Tuning

                This issue has a mass of 162.

                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                Refactorings

                Further Reading

                Similar blocks of code found in 2 locations. Consider refactoring.
                Open

                    def __gt__(self, other):
                        le = self.__le__(other)
                        return None if le is None else not le
                Severity: Minor
                Found in businessdate/businessperiod.py and 1 other location - About 55 mins to fix
                businessdate/businessperiod.py on lines 241..243

                Duplicated Code

                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                Tuning

                This issue has a mass of 37.

                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                Refactorings

                Further Reading

                Similar blocks of code found in 2 locations. Consider refactoring.
                Open

                    def __ge__(self, other):
                        lt = self.__lt__(other)
                        return None if lt is None else not lt
                Severity: Minor
                Found in businessdate/businessperiod.py and 1 other location - About 55 mins to fix
                businessdate/businessperiod.py on lines 245..247

                Duplicated Code

                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                Tuning

                This issue has a mass of 37.

                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                Refactorings

                Further Reading

                Line too long (100 > 79 characters)
                Open

                                    raise ValueError("Unable to parse %s as %s" % (period, self.__class__.__name__))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (85 > 79 characters)
                Open

                                # except the first non vanishing of y,q,m,w,d must have positive sign
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Missing whitespace around operator
                Open

                        s, p = _parse(p, 'B') if not p[-1]=='B' else (0, p)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Surround operators with a single space on either side.

                - Always surround these binary operators with a single space on
                  either side: assignment (=), augmented assignment (+=, -= etc.),
                  comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
                  Booleans (and, or, not).
                
                - If operators with different priorities are used, consider adding
                  whitespace around the operators with the lowest priorities.
                
                Okay: i = i + 1
                Okay: submitted += 1
                Okay: x = x * 2 - 1
                Okay: hypot2 = x * x + y * y
                Okay: c = (a + b) * (a - b)
                Okay: foo(bar, key='word', *args, **kwargs)
                Okay: alpha[:-i]
                
                E225: i=i+1
                E225: submitted +=1
                E225: x = x /2 - 1
                E225: z = x **y
                E225: z = 1and 1
                E226: c = (a+b) * (a-b)
                E226: hypot2 = x*x + y*y
                E227: c = a|b
                E228: msg = fmt%(errno, errmsg)

                Line too long (107 > 79 characters)
                Open

                            days_in_month = 28, 31, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 # days from feb to jan backwards
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (88 > 79 characters)
                Open

                                "Either string or argument input only for %s" % self.__class__.__name__)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (107 > 79 characters)
                Open

                                "Either (years,months,days) or businessdays must be zero for %s" % self.__class__.__name__)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (120 > 79 characters)
                Open

                                        "Except at the beginning no signs allowed in %s as %s" % (str(period), self.__class__.__name__))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (110 > 79 characters)
                Open

                                "%s of Type %s not valid to create BusinessPeriod." %(str(period), period.__class__.__name__))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Missing whitespace after ','
                Open

                        y,m,d,b = tuple(map(abs, ymdb))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Each comma, semicolon or colon should be followed by whitespace.

                Okay: [a, b]
                Okay: (3,)
                Okay: a[1:4]
                Okay: a[:4]
                Okay: a[1:]
                Okay: a[1:4:2]
                E231: ['a','b']
                E231: foo(bar,baz)
                E231: [{'a':'b'}]

                Line too long (114 > 79 characters)
                Open

                        raise TypeError('addition of BusinessPeriod cannot handle objects of type %s.' % other.__class__.__name__)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (82 > 79 characters)
                Open

                        raise TypeError("expected int type but got %s" % other.__class__.__name__)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (86 > 79 characters)
                Open

                        # can even parse strings like '-1B-2Y-4Q+5M' but also '0B', '-1Y2M3D' as well.
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (117 > 79 characters)
                Open

                        raise TypeError('subtraction of BusinessPeriod cannot handle objects of type %s.' % other.__class__.__name__)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (92 > 79 characters)
                Open

                        return int(-1 * (-1 * self._months % 12) if self._months < 0 else self._months % 12)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Missing whitespace after ','
                Open

                        y,m,d,b = tuple(map(abs, ymdb))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Each comma, semicolon or colon should be followed by whitespace.

                Okay: [a, b]
                Okay: (3,)
                Okay: a[1:4]
                Okay: a[:4]
                Okay: a[1:]
                Okay: a[1:4:2]
                E231: ['a','b']
                E231: foo(bar,baz)
                E231: [{'a':'b'}]

                At least two spaces before inline comment
                Open

                            days_in_month = 28, 31, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 # days from feb to jan backwards
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Separate inline comments by at least two spaces.

                An inline comment is a comment on the same line as a statement.
                Inline comments should be separated by at least two spaces from the
                statement. They should start with a # and a single space.
                
                Each line of a block comment starts with a # and a single space
                (unless it is indented text inside the comment).
                
                Okay: x = x + 1  # Increment x
                Okay: x = x + 1    # Increment x
                Okay: # Block comment
                E261: x = x + 1 # Increment x
                E262: x = x + 1  #Increment x
                E262: x = x + 1  #  Increment x
                E265: #Block comment
                E266: ### Block comment

                Line too long (96 > 79 characters)
                Open

                        """ class to store and calculate date periods as combinations of days, weeks, years etc.
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (89 > 79 characters)
                Open

                        """ returns true if the argument can be understood as :class:`BusinessPeriod` """
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (92 > 79 characters)
                Open

                         Such is given by a sequence of digits as :class:`int` followed by a :class:`char` -
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (109 > 79 characters)
                Open

                                "(years, months, days)=%s must have equal sign for %s" % (str(ymd), self.__class__.__name__))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (107 > 79 characters)
                Open

                            days_in_month = 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28  # days from mar to feb forwards
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Whitespace before ':'
                Open

                        if self._months < 0 :
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Avoid extraneous whitespace.

                Avoid extraneous whitespace in these situations:
                - Immediately inside parentheses, brackets or braces.
                - Immediately before a comma, semicolon, or colon.
                
                Okay: spam(ham[1], {eggs: 2})
                E201: spam( ham[1], {eggs: 2})
                E201: spam(ham[ 1], {eggs: 2})
                E201: spam(ham[1], { eggs: 2})
                E202: spam(ham[1], {eggs: 2} )
                E202: spam(ham[1 ], {eggs: 2})
                E202: spam(ham[1], {eggs: 2 })
                
                E203: if x == 4: print x, y; x, y = y , x
                E203: if x == 4: print x, y ; x, y = y, x
                E203: if x == 4 : print x, y; x, y = y, x

                Line too long (81 > 79 characters)
                Open

                        :param int years: number of years in the period (equivalent to 12 months)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                At least two spaces before inline comment
                Open

                            days_in_month = 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31 # days from feb to jan forwards
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Separate inline comments by at least two spaces.

                An inline comment is a comment on the same line as a statement.
                Inline comments should be separated by at least two spaces from the
                statement. They should start with a # and a single space.
                
                Each line of a block comment starts with a # and a single space
                (unless it is indented text inside the comment).
                
                Okay: x = x + 1  # Increment x
                Okay: x = x + 1    # Increment x
                Okay: # Block comment
                E261: x = x + 1 # Increment x
                E262: x = x + 1  #Increment x
                E262: x = x + 1  #  Increment x
                E265: #Block comment
                E266: ### Block comment

                Line too long (93 > 79 characters)
                Open

                                    raise ValueError("Unable to parse %s in %s as %s" % (s, p, cls.__name__))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (90 > 79 characters)
                Open

                            period_str = '-' if self.years < 0 or self.months < 0 or self.days < 0 else ''
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (86 > 79 characters)
                Open

                        :param int quarters: number of quarters in the period (equivalent to 3 months)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Block comment should start with '# '
                Open

                            #if period.upper().strip('+-0123456789BYQMWD'):
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Separate inline comments by at least two spaces.

                An inline comment is a comment on the same line as a statement.
                Inline comments should be separated by at least two spaces from the
                statement. They should start with a # and a single space.
                
                Each line of a block comment starts with a # and a single space
                (unless it is indented text inside the comment).
                
                Okay: x = x + 1  # Increment x
                Okay: x = x + 1    # Increment x
                Okay: # Block comment
                E261: x = x + 1 # Increment x
                E262: x = x + 1  #Increment x
                E262: x = x + 1  #  Increment x
                E265: #Block comment
                E266: ### Block comment

                Multiple spaces before operator
                Open

                        m  = sgn * self._months
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Avoid extraneous whitespace around an operator.

                Okay: a = 12 + 3
                E221: a = 4  + 5
                E222: a = 4 +  5
                E223: a = 4\t+ 5
                E224: a = 4 +\t5

                Line too long (102 > 79 characters)
                Open

                         i.e. days which are neither weekend nor :class:`holidays <BusinessHolidays>`,  in the period.
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Missing whitespace after ','
                Open

                        y,m,d,b = tuple(map(abs, ymdb))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Each comma, semicolon or colon should be followed by whitespace.

                Okay: [a, b]
                Okay: (3,)
                Okay: a[1:4]
                Okay: a[:4]
                Okay: a[1:]
                Okay: a[1:4:2]
                E231: ['a','b']
                E231: foo(bar,baz)
                E231: [{'a':'b'}]

                Line too long (106 > 79 characters)
                Open

                            days_in_month = 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31 # days from feb to jan forwards
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Line too long (115 > 79 characters)
                Open

                                businessdays, years, quarters, months, weeks, days = s, sgn * y, sgn * q, sgn * m, sgn * w, sgn * d
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Trailing whitespace
                Open

                # 
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Trailing whitespace is superfluous.

                The warning returned varies on whether the line itself is blank,
                for easier filtering for those who want to indent their blank lines.
                
                Okay: spam(1)\n#
                W291: spam(1) \n#
                W293: class Foo(object):\n    \n    bang = 12

                Line too long (98 > 79 characters)
                Open

                    def __init__(self, period='', years=0, quarters=0, months=0, weeks=0, days=0, businessdays=0):
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                Missing whitespace around operator
                Open

                                "%s of Type %s not valid to create BusinessPeriod." %(str(period), period.__class__.__name__))
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Surround operators with a single space on either side.

                - Always surround these binary operators with a single space on
                  either side: assignment (=), augmented assignment (+=, -= etc.),
                  comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
                  Booleans (and, or, not).
                
                - If operators with different priorities are used, consider adding
                  whitespace around the operators with the lowest priorities.
                
                Okay: i = i + 1
                Okay: submitted += 1
                Okay: x = x * 2 - 1
                Okay: hypot2 = x * x + y * y
                Okay: c = (a + b) * (a - b)
                Okay: foo(bar, key='word', *args, **kwargs)
                Okay: alpha[:-i]
                
                E225: i=i+1
                E225: submitted +=1
                E225: x = x /2 - 1
                E225: z = x **y
                E225: z = 1and 1
                E226: c = (a+b) * (a-b)
                E226: hypot2 = x*x + y*y
                E227: c = a|b
                E228: msg = fmt%(errno, errmsg)

                Line too long (94 > 79 characters)
                Open

                        return int(-1 * (-1 * self._months // 12) if self._months < 0 else self._months // 12)
                Severity: Minor
                Found in businessdate/businessperiod.py by pep8

                Limit all lines to a maximum of 79 characters.

                There are still many devices around that are limited to 80 character
                lines; plus, limiting windows to 80 characters makes it possible to
                have several windows side-by-side.  The default wrapping on such
                devices looks ugly.  Therefore, please limit all lines to a maximum
                of 79 characters. For flowing long blocks of text (docstrings or
                comments), limiting the length to 72 characters is recommended.
                
                Reports error E501.

                There are no issues that match your filters.

                Category
                Status