#!/usr/bin/env python

# Copyright (c) 2001-2004, MetaSlash Inc.  All rights reserved.
# Portions Copyright (c) 2005, Google, Inc.  All rights reserved.

"""
Warning Messages for PyChecker
"""

import UserString

class WarningClass:
  level = 0

  def __init__(self, msg, level_offset=None):
    self.msg = msg
    if level_offset is not None:
      self.level += level_offset

  def __mod__(self, args):
    result = UserString.UserString(self.msg % args)
    result.level = self.level
    return result

  def __str__(self):
    return self.msg

class Internal(WarningClass):
  level = 100

class Error(WarningClass):
  level = 90

class Security(WarningClass):
  level = 90

class Warning(WarningClass):
  level = 70

class Unused(WarningClass):
  level = 50

class Deprecated(WarningClass):
  level = 40

class Style(WarningClass):
  level = 10

TOO_MANY_WARNINGS = WarningClass("%d errors suppressed, use -#/--limit to increase the number of errors displayed")
CHECKER_BROKEN = Internal("INTERNAL ERROR -- STOPPED PROCESSING FUNCTION --\n\t%s")
INVALID_CHECKER_ARGS = Internal("Invalid warning suppression arguments --\n\t%s")

NO_MODULE_DOC = Style("No module doc string")
NO_CLASS_DOC = Style("No doc string for class %s")
NO_FUNC_DOC = Style("No doc string for function %s")

VAR_NOT_USED = Unused("Variable (%s) not used")
IMPORT_NOT_USED = Unused("Imported module (%s) not used")
UNUSED_LOCAL = Unused("Local variable (%s) not used")
UNUSED_PARAMETER = Unused("Parameter (%s) not used")
UNUSED_MEMBERS = Unused("Members (%s) not used in class (%s)")
NO_LOCAL_VAR = Unused("No local variable (%s)")
VAR_USED_BEFORE_SET = Warning("Variable (%s) used before being set")

REDEFINING_ATTR = Warning("Redefining attribute (%s) original line (%d)")

MODULE_IMPORTED_AGAIN = Warning("Module (%s) re-imported")
MODULE_MEMBER_IMPORTED_AGAIN = Warning("Module member (%s) re-imported")
MODULE_MEMBER_ALSO_STAR_IMPORTED = Warning("Module member (%s) re-imported with *")
MIX_IMPORT_AND_FROM_IMPORT = Warning("Using import and from ... import for (%s)")
IMPORT_SELF = Warning("Module (%s) imports itself")

NO_METHOD_ARGS = Error("No method arguments, should have %s as argument")
SELF_NOT_FIRST_ARG = Error("%s is not first %smethod argument")
SELF_IS_ARG = Error("self is argument in %s")
RETURN_FROM_INIT = Error("Cannot return a value from __init__")
NO_CTOR_ARGS = Error("Instantiating an object with arguments, but no constructor")

GLOBAL_DEFINED_NOT_DECLARED = Warning("Global variable (%s) not defined in module scope")
INVALID_GLOBAL = Error("No global (%s) found")
INVALID_METHOD = Error("No method (%s) found")
INVALID_CLASS_ATTR = Warning("No class attribute (%s) found")
INVALID_SET_CLASS_ATTR = Warning("Setting class attribute (%s) not set in __init__")
INVALID_MODULE_ATTR = Error("No module attribute (%s) found")

LOCAL_SHADOWS_GLOBAL = Warning("Local variable (%s) shadows global defined on line %d")
VARIABLE_SHADOWS_BUILTIN = Warning("(%s) shadows builtin")
USING_METHOD_AS_ATTR = Warning("Using method (%s) as an attribute (not invoked)")
OBJECT_HAS_NO_ATTR = Warning("Object (%s) has no attribute (%s)")
METHOD_SIGNATURE_MISMATCH = Warning("Overridden method (%s) doesn't match signature in class (%s)")

INVALID_ARG_COUNT1 = Error("Invalid arguments to (%s), got %d, expected %d")
INVALID_ARG_COUNT2 = Error("Invalid arguments to (%s), got %d, expected at least %d")
INVALID_ARG_COUNT3 = Error("Invalid arguments to (%s), got %d, expected between %d and %d")
FUNC_DOESNT_SUPPORT_KW = Error("Function (%s) doesn't support **kwArgs")
FUNC_DOESNT_SUPPORT_KW_ARG = Error("Function (%s) doesn't support **kwArgs for name (%s)")
FUNC_USES_NAMED_ARGS = Warning("Function (%s) uses named arguments")

BASE_CLASS_NOT_INIT = Warning("Base class (%s) __init__() not called")
NO_INIT_IN_SUBCLASS = Warning("No __init__() in subclass (%s)")
METHODS_NEED_OVERRIDE = Error("Methods (%s) in %s need to be overridden in a subclass")

FUNC_TOO_LONG = Style("Function (%s) has too many lines (%d)")
TOO_MANY_BRANCHES = Style("Function (%s) has too many branches (%d)")
TOO_MANY_RETURNS = Style("Function (%s) has too many returns (%d)")
TOO_MANY_ARGS = Style("Function (%s) has too many arguments (%d)")
TOO_MANY_LOCALS = Style("Function (%s) has too many local variables (%d)")
TOO_MANY_REFERENCES = Style('Law of Demeter violated, more than %d references for (%s)')

IMPLICIT_AND_EXPLICIT_RETURNS = Warning("Function returns a value and also implicitly returns None")
INCONSISTENT_RETURN_TYPE = Warning("Function return types are inconsistent")
INCONSISTENT_TYPE = Warning("Variable (%s) already has types %s and set to %s")
CODE_UNREACHABLE = Error("Code appears to be unreachable")
CONSTANT_CONDITION = Warning("Using a conditional statement with a constant value (%s)")
STRING_ITERATION = Warning("Iterating over a string (%s)")
DONT_RETURN_NONE = Error("%s should not return None, raise an exception if not found")
IS_LITERAL = Warning("Using is%s %s, may not always work")
INVALID_FORMAT = Error("Invalid format string, problem starts near: '%s'")
INVALID_FORMAT_COUNT = Error("Format string argument count (%d) doesn't match arguments (%d)")
TOO_MANY_STARS_IN_FORMAT = Error("Too many *s in format flags")
USING_STAR_IN_FORMAT_MAPPING = Error("Can't use * in formats when using a mapping (dictionary), near: '%s'")
CANT_MIX_MAPPING_IN_FORMATS = Error("Can't mix tuple/mapping (dictionary) formats in same format string")

INTEGER_DIVISION = Warning("Using integer division (%s / %s) may return integer or float")
MODULO_1 = Warning("... % 1 may be constant")
USING_TUPLE_ACCESS_TO_LIST = Error("Using a tuple instead of slice as list accessor for (%s)")
BOOL_COMPARE = Warning("Comparisons with %s are not necessary and may not work as expected")
SHOULDNT_ASSIGN_BUILTIN = Deprecated("Should not assign to %s, it is (or will be) a builtin")
SHOULDNT_ASSIGN_NAME = Deprecated("Should not assign to %s, it is similar to builtin %s")
SET_VAR_TO_ITSELF = Warning("Setting %s to itself has no effect")
MODIFY_VAR_NOOP = Warning("%s %s %s has no effect")
DIVIDE_VAR_BY_ITSELF = Warning("%s %s %s is always 1 or ZeroDivisionError")
XOR_VAR_WITH_ITSELF = Warning("%s %s %s is always 0")

STMT_WITH_NO_EFFECT = Error("Operator (%s) doesn't exist, statement has no effect")
POSSIBLE_STMT_WITH_NO_EFFECT = Error("Statement appears to have no effect")
UNARY_POSITIVE_HAS_NO_EFFECT = Error("Unary positive (+) usually has no effect")
LIST_APPEND_ARGS = Error("[].append() only takes 1 argument in Python 1.6 and above for (%s)")

LOCAL_DELETED = Error("(%s) cannot be used after being deleted on line %d")
LOCAL_ALREADY_DELETED = Error("Local variable (%s) has already been deleted on line %d")
VAR_DELETED_BEFORE_SET = Error("Variable (%s) deleted before being set")

CATCH_BAD_EXCEPTION = Warning("Catching a non-Exception object (%s)")
CATCH_STR_EXCEPTION = Deprecated("Catching string exceptions are deprecated (%s)")
RAISE_BAD_EXCEPTION = Warning("Raising an exception on a non-Exception object (%s)")
RAISE_STR_EXCEPTION = Deprecated("Raising string exceptions are deprecated (%s)")
SET_EXCEPT_TO_BUILTIN = Error("Setting exception to builtin (%s), consider () around exceptions")
USING_KEYWORD = Warning("Using identifier (%s) which will become a keyword in version %s")
MODIFYING_DEFAULT_ARG = Warning("Modifying parameter (%s) with a default value may have unexpected consequences")
USING_SELF_IN_REPR = Warning("Using `self` in __repr__ method")
USING_NONE_RETURN_VALUE = Error("Using the return value from (%s) which is always None")
WRONG_UNPACK_SIZE = Error("Unpacking %d values into %d variables")
WRONG_UNPACK_FUNCTION = Error("Unpacking function (%s) which returns %d values into %d variables")
UNPACK_NON_SEQUENCE = Error("Unpacking a non-sequence (%s) of type %s")

NOT_SPECIAL_METHOD = Warning("%s is not a special method")
USING_COERCE_IN_NEW_CLASS = Error("Using __coerce__ in new-style class (%s) will not work for binary operations")
USING_NEW_STYLE_METHOD_IN_OLD_CLASS = Error("Using %s in old-style class (%s) does not work")
USING_PROPERTIES_IN_CLASSIC_CLASS = Error("Using property (%s) in classic class %s may not work")
USING_SLOTS_IN_CLASSIC_CLASS = Error("Using __slots__ in classic class %s has no effect, consider deriving from object")
EMPTY_SLOTS = Warning("__slots__ are empty in %s")

USES_EXEC = Security("Using the exec statement")
USES_GLOBAL_EXEC = Security("Using the exec statement in global namespace")
USES_INPUT = Security("Using input() is a security problem, consider using raw_input()")

USING_DEPRECATED_MODULE = Deprecated("%s module is deprecated")
USING_DEPRECATED_ATTR = Deprecated("%s is deprecated")
USING_INSECURE_FUNC = Security("%s() is a security problem")
USE_INSTEAD = ", consider using %s"

USES_CONST_ATTR = Warning("Passing a constant string to %s, consider direct reference")

BAD_STRING_FIND = Error("string.find() returns an integer, consider checking >= 0 or < 0 for not found")
