1
0
mirror of https://github.com/JoelBender/bacpypes synced 2025-09-28 22:15:23 +08:00

removing flakes

This commit is contained in:
Joel Bender 2015-07-16 16:40:47 -04:00
parent 065b2959e2
commit 946ea12701
4 changed files with 139 additions and 67 deletions

View File

@ -7,10 +7,16 @@ Application Layer Protocol Data Units
from .errors import DecodingError
from .debugging import ModuleLogger, DebugContents, bacpypes_debugging
from .pdu import Address, GlobalBroadcast, LocalBroadcast, LocalStation, ModuleLogger, PCI, PDU, PDUData, RemoteBroadcast, RemoteStation
from .primitivedata import Address, ApplicationTag, Atomic, BitString, Boolean, CharacterString, ClosingTag, ContextTag, Date, DecodingError, Double, Enumerated, GlobalBroadcast, Integer, LocalBroadcast, LocalStation, ModuleLogger, Null, ObjectIdentifier, ObjectType, OctetString, OpeningTag, PCI, PDU, PDUData, Real, RemoteBroadcast, RemoteStation, Tag, TagList, Time, Unsigned, expand_enumerations
from .constructeddata import Address, Any, AnyAtomic, ApplicationTag, Array, ArrayOf, Atomic, BitString, Boolean, CharacterString, Choice, ClosingTag, ContextTag, Date, DecodingError, Double, Element, Enumerated, GlobalBroadcast, Integer, LocalBroadcast, LocalStation, ModuleLogger, Null, ObjectIdentifier, ObjectType, OctetString, OpeningTag, PCI, PDU, PDUData, Real, RemoteBroadcast, RemoteStation, Sequence, SequenceOf, Tag, TagList, Time, Unsigned
from .basetypes import AccessAuthenticationFactorDisable, AccessCredentialDisable, AccessCredentialDisableReason, AccessEvent, AccessPassbackMode, AccessRule, AccessRuleLocationSpecifier, AccessRuleTimeRangeSpecifier, AccessThreatLevel, AccessUserType, AccessZoneOccupancyState, AccumulatorRecord, AccumulatorRecordAccumulatorStatus, Action, ActionCommand, ActionList, Address, AddressBinding, Any, AnyAtomic, ApplicationTag, Array, ArrayOf, AssignedAccessRights, Atomic, AuthenticationFactor, AuthenticationFactorFormat, AuthenticationFactorType, AuthenticationPolicy, AuthenticationPolicyPolicy, AuthenticationStatus, AuthorizationException, AuthorizationMode, BackupState, BinaryPV, BitString, Boolean, COVSubscription, CalendarEntry, ChannelValue, CharacterString, Choice, ClientCOV, ClosingTag, ContextTag, CredentialAuthenticationFactor, DailySchedule, Date, DateRange, DateTime, DaysOfWeek, DecodingError, Destination, DeviceAddress, DeviceObjectPropertyReference, DeviceObjectPropertyValue, DeviceObjectReference, DeviceStatus, DoorAlarmState, DoorSecuredStatus, DoorStatus, DoorValue, Double, Element, EngineeringUnits, Enumerated, ErrorClass, ErrorCode, ErrorType, EventNotificationSubscription, EventParameter, EventParameterAccessEvent, EventParameterAccessEventAccessEvent, EventParameterBufferReady, EventParameterChangeOfBitstring, EventParameterChangeOfCharacterString, EventParameterChangeOfLifeSafety, EventParameterChangeOfState, EventParameterChangeOfStatusFlags, EventParameterChangeOfValue, EventParameterChangeOfValueCOVCriteria, EventParameterCommandFailure, EventParameterDoubleOutOfRange, EventParameterExtended, EventParameterExtendedParameters, EventParameterFloatingLimit, EventParameterOutOfRange, EventParameterSignedOutOfRange, EventParameterUnsignedOutOfRange, EventParameterUnsignedRange, EventState, EventTransitionBits, EventType, FaultParameter, FaultParameterCharacterString, FaultParameterExtended, FaultParameterExtendedParameters, FaultParameterLifeSafety, FaultParameterState, FaultParameterStatusFlags, FaultType, FileAccessMethod, GlobalBroadcast, Integer, KeyIdentifier, LifeSafetyMode, LifeSafetyOperation, LifeSafetyState, LightingCommand, LightingInProgress, LightingOperation, LightingTransition, LimitEnable, LocalBroadcast, LocalStation, LockStatus, LogData, LogDataLogData, LogMultipleRecord, LogRecord, LogRecordLogDatum, LogStatus, LoggingType, Maintenance, ModuleLogger, NetworkSecurityPolicy, NodeType, NotificationParameters, NotificationParametersAccessEventType, NotificationParametersBufferReady, NotificationParametersChangeOfBitstring, NotificationParametersChangeOfCharacterStringType, NotificationParametersChangeOfLifeSafety, NotificationParametersChangeOfState, NotificationParametersChangeOfStatusFlagsType, NotificationParametersChangeOfValue, NotificationParametersChangeOfValueNewValue, NotificationParametersCommandFailure, NotificationParametersComplexEventType, NotificationParametersDoubleOutOfRangeType, NotificationParametersExtended, NotificationParametersExtendedParametersType, NotificationParametersFloatingLimit, NotificationParametersOutOfRange, NotificationParametersSignedOutOfRangeType, NotificationParametersUnsignedOutOfRangeType, NotificationParametersUnsignedRange, NotifyType, Null, ObjectIdentifier, ObjectPropertyReference, ObjectPropertyValue, ObjectType, ObjectTypesSupported, OctetString, OpeningTag, OptionalCharacterString, PCI, PDU, PDUData, Polarity, PortPermission, Prescale, PriorityArray, PriorityValue, ProcessIdSelection, ProgramError, ProgramRequest, ProgramState, PropertyAccessResult, PropertyAccessResultAccessResult, PropertyIdentifier, PropertyReference, PropertyStates, PropertyValue, Real, Recipient, RecipientProcess, Reliability, RemoteBroadcast, RemoteStation, RestartReason, ResultFlags, Scale, SecurityKeySet, SecurityLevel, SecurityPolicy, Segmentation, Sequence, SequenceOf, ServicesSupported, SetpointReference, ShedLevel, ShedState, SilencedState, SpecialEvent, SpecialEventPeriod, StatusFlags, Tag, TagList, Time, TimeStamp, TimeValue, Unsigned, VTClass, VTSession, WeekNDay, WriteStatus
from .pdu import PCI, PDUData, NPDU
from .primitivedata import Boolean, CharacterString, Enumerated, Integer, \
ObjectIdentifier, ObjectType, OctetString, Real, TagList, Unsigned, \
expand_enumerations
from .constructeddata import Any, Choice, Element, Sequence, SequenceOf
from .basetypes import ChannelValue, DateTime, DeviceAddress, ErrorType, \
EventState, EventTransitionBits, EventType, LifeSafetyOperation, \
NotificationParameters, NotifyType, ObjectPropertyReference, \
PropertyIdentifier, PropertyReference, PropertyValue, RecipientProcess, \
ResultFlags, Segmentation, TimeStamp, VTClass
# some debugging
_debug = 0
@ -346,7 +352,7 @@ class APDU(APCI, PDUData):
def dict_contents(self, use_dict=None, as_class=dict):
"""Return the contents of an object as a dict."""
if _debug: NPDU._debug("dict_contents use_dict=%r as_class=%r key_values=%r", use_dict, as_class, key_values)
if _debug: NPDU._debug("dict_contents use_dict=%r as_class=%r", use_dict, as_class)
# make/extend the dictionary of content
if use_dict is None:

View File

@ -482,7 +482,6 @@ class Object(Logging):
# Standard Object Types
#
@register_object_type
class AccessCredentialObject(Object):
objectType = 'accessCredential'
properties = \
@ -513,7 +512,8 @@ class AccessCredentialObject(Object):
# , OptionalProperty('occupancyExemption', Boolean)
]
@register_object_type
register_object_type(AccessCredentialObject)
class AccessDoorObject(Object):
objectType = 'accessDoor'
properties = \
@ -550,7 +550,8 @@ class AccessDoorObject(Object):
, OptionalProperty('eventAlgorithmInhibit', Boolean)
]
@register_object_type
register_object_type(AccessDoorObject)
class AccessPointObject(Object):
objectType = 'accessPoint'
properties = \
@ -602,7 +603,8 @@ class AccessPointObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AccessPointObject)
class AccessRightsObject(Object):
objectType = 'accessRights'
properties = \
@ -616,7 +618,8 @@ class AccessRightsObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AccessRightsObject)
class AccessUserObject(Object):
objectType = 'accessUser'
properties = \
@ -632,7 +635,8 @@ class AccessUserObject(Object):
, ReadableProperty('credentials', SequenceOf(DeviceObjectReference))
]
@register_object_type
register_object_type(AccessUserObject)
class AccessZoneObject(Object):
objectType = 'accessZone'
properties = \
@ -672,7 +676,8 @@ class AccessZoneObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AccessZoneObject)
class AccumulatorObject(Object):
objectType = 'accumulator'
properties = \
@ -711,7 +716,8 @@ class AccumulatorObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AccumulatorObject)
class AlertEnrollmentObject(Object):
objectType = 'alertEnrollment'
properties = \
@ -729,7 +735,8 @@ class AlertEnrollmentObject(Object):
, OptionalProperty('eventAlgorithmInhibit', Boolean)
]
@register_object_type
register_object_type(AlertEnrollmentObject)
class AnalogInputObject(Object):
objectType = 'analogInput'
properties = \
@ -764,7 +771,8 @@ class AnalogInputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AnalogInputObject)
class AnalogOutputObject(Object):
objectType = 'analogOutput'
properties = \
@ -800,7 +808,8 @@ class AnalogOutputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AnalogOutputObject)
class AnalogValueObject(Object):
objectType = 'analogValue'
properties = \
@ -835,7 +844,8 @@ class AnalogValueObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(AnalogValueObject)
class AveragingObject(Object):
objectType = 'averaging'
properties = \
@ -852,7 +862,8 @@ class AveragingObject(Object):
, WritableProperty('windowSamples', Unsigned)
]
@register_object_type
register_object_type(AveragingObject)
class BinaryInputObject(Object):
objectType = 'binaryInput'
properties = \
@ -886,7 +897,8 @@ class BinaryInputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(BinaryInputObject)
class BinaryOutputObject(Object):
objectType = 'binaryOutput'
properties = \
@ -924,7 +936,8 @@ class BinaryOutputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(BinaryOutputObject)
class BinaryValueObject(Object):
objectType = 'binaryValue'
properties = \
@ -960,7 +973,8 @@ class BinaryValueObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(BinaryValueObject)
class BitStringValueObject(Object):
objectType = 'bitstringValue'
properties = \
@ -989,7 +1003,8 @@ class BitStringValueObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(BitStringValueObject)
class CalendarObject(Object):
objectType = 'calendar'
properties = \
@ -997,7 +1012,8 @@ class CalendarObject(Object):
, ReadableProperty('dateList', SequenceOf(CalendarEntry))
]
@register_object_type
register_object_type(CalendarObject)
class ChannelObject(Object):
objectType = 'channel'
properties = \
@ -1024,7 +1040,8 @@ class ChannelObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(ChannelObject)
class CharacterStringValueObject(Object):
objectType = 'characterstringValue'
properties = \
@ -1052,7 +1069,8 @@ class CharacterStringValueObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(CharacterStringValueObject)
class CommandObject(Object):
objectType = 'command'
properties = \
@ -1063,7 +1081,8 @@ class CommandObject(Object):
, OptionalProperty('actionText', ArrayOf(CharacterString))
]
@register_object_type
register_object_type(CommandObject)
class CredentialDataInputObject(Object):
objectType = 'credentialDataInput'
properties = \
@ -1085,7 +1104,8 @@ class CredentialDataInputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(CredentialDataInputObject)
class DatePatternValueObject(Object):
objectType = 'datePatternValue'
properties = \
@ -1098,7 +1118,8 @@ class DatePatternValueObject(Object):
, OptionalProperty('relinquishDefault', Date)
]
@register_object_type
register_object_type(DatePatternValueObject)
class DateValueObject(Object):
objectType = 'dateValue'
properties = \
@ -1111,7 +1132,8 @@ class DateValueObject(Object):
, OptionalProperty('relinquishDefault', Date)
]
@register_object_type
register_object_type(DateValueObject)
class DateTimePatternValueObject(Object):
objectType = 'datetimePatternValue'
properties = \
@ -1125,7 +1147,8 @@ class DateTimePatternValueObject(Object):
, OptionalProperty('isUtc', Boolean)
]
@register_object_type
register_object_type(DateTimePatternValueObject)
class DateTimeValueObject(Object):
objectType = 'datetimeValue'
properties = \
@ -1139,7 +1162,8 @@ class DateTimeValueObject(Object):
, OptionalProperty('isUtc', Boolean)
]
@register_object_type
register_object_type(DateTimeValueObject)
class DeviceObject(Object):
objectType = 'device'
properties = \
@ -1194,7 +1218,8 @@ class DeviceObject(Object):
, OptionalProperty('intervalOffset', Unsigned)
]
@register_object_type
register_object_type(DeviceObject)
class EventEnrollmentObject(Object):
objectType = 'eventEnrollment'
properties = \
@ -1220,6 +1245,8 @@ class EventEnrollmentObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
register_object_type(EventEnrollmentObject)
#-----
class EventLogRecordLogDatum(Choice):
@ -1235,7 +1262,6 @@ class EventLogRecord(Sequence):
, Element('logDatum', EventLogRecordLogDatum, 1)
]
@register_object_type
class EventLogObject(Object):
objectType = 'eventLog'
properties = \
@ -1265,9 +1291,10 @@ class EventLogObject(Object):
, OptionalProperty('eventAlgorithmInhibit', Boolean)
]
register_object_type(EventLogObject)
#-----
@register_object_type
class FileObject(Object):
objectType = 'file'
properties = \
@ -1280,9 +1307,10 @@ class FileObject(Object):
, OptionalProperty('recordCount', Unsigned)
]
register_object_type(FileObject)
#-----
@register_object_type
class GlobalGroupObject(Object):
objectType = 'globalGroup'
properties = \
@ -1315,7 +1343,8 @@ class GlobalGroupObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(GlobalGroupObject)
class GroupObject(Object):
objectType = 'group'
properties = \
@ -1323,7 +1352,8 @@ class GroupObject(Object):
, ReadableProperty('presentValue', SequenceOf(ReadAccessResult))
]
@register_object_type
register_object_type(GroupObject)
class IntegerValueObject(Object):
objectType = 'integerValue'
properties = \
@ -1358,7 +1388,8 @@ class IntegerValueObject(Object):
, OptionalProperty('resolution', Integer)
]
@register_object_type
register_object_type(IntegerValueObject)
class LargeAnalogValueObject(Object):
objectType = 'largeAnalogValue'
properties = \
@ -1393,7 +1424,8 @@ class LargeAnalogValueObject(Object):
, OptionalProperty('resolution', Double)
]
@register_object_type
register_object_type(LargeAnalogValueObject)
class LifeSafetyPointObject(Object):
objectType = 'lifeSafetyPoint'
properties = \
@ -1431,7 +1463,8 @@ class LifeSafetyPointObject(Object):
, OptionalProperty('memberOf', SequenceOf(DeviceObjectReference))
]
@register_object_type
register_object_type(LifeSafetyPointObject)
class LifeSafetyZoneObject(Object):
objectType = 'lifeSafetyZone'
properties = \
@ -1467,7 +1500,8 @@ class LifeSafetyZoneObject(Object):
, OptionalProperty('memberOf', SequenceOf(DeviceObjectReference))
]
@register_object_type
register_object_type(LifeSafetyZoneObject)
class LightingOutputObject(Object):
objectType = 'lightingOutput'
properties = \
@ -1497,7 +1531,8 @@ class LightingOutputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(LightingOutputObject)
class LoadControlObject(Object):
objectType = 'loadControl'
properties = \
@ -1531,7 +1566,8 @@ class LoadControlObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(LoadControlObject)
class LoopObject(Object):
objectType = 'loop'
properties = \
@ -1577,7 +1613,8 @@ class LoopObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(LoopObject)
class MultiStateInputObject(Object):
objectType = 'multiStateInput'
properties = \
@ -1606,7 +1643,8 @@ class MultiStateInputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(MultiStateInputObject)
class MultiStateOutputObject(Object):
objectType = 'multiStateOutput'
properties = \
@ -1636,7 +1674,8 @@ class MultiStateOutputObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(MultiStateOutputObject)
class MultiStateValueObject(Object):
objectType = 'multiStateValue'
properties = \
@ -1666,7 +1705,8 @@ class MultiStateValueObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(MultiStateValueObject)
class NetworkSecurityObject(Object):
objectType = 'networkSecurity'
properties = \
@ -1683,7 +1723,8 @@ class NetworkSecurityObject(Object):
, WritableProperty('doNotHide', Boolean)
]
@register_object_type
register_object_type(NetworkSecurityObject)
class NotificationClassObject(Object):
objectType = 'notificationClass'
properties = \
@ -1693,7 +1734,8 @@ class NotificationClassObject(Object):
, ReadableProperty('recipientList', SequenceOf(Destination))
]
@register_object_type
register_object_type(NotificationClassObject)
class NotificationForwarderObject(Object):
objectType = 'notificationForwarder'
properties = \
@ -1708,7 +1750,8 @@ class NotificationForwarderObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(NotificationForwarderObject)
class OctetStringValueObject(Object):
objectType = 'octetstringValue'
properties = \
@ -1721,7 +1764,8 @@ class OctetStringValueObject(Object):
, OptionalProperty('relinquishDefault', OctetString)
]
@register_object_type
register_object_type(OctetStringValueObject)
class PositiveIntegerValueObject(Object):
objectType = 'positiveIntegerValue'
properties = \
@ -1756,7 +1800,8 @@ class PositiveIntegerValueObject(Object):
, OptionalProperty('resolution', Unsigned)
]
@register_object_type
register_object_type(PositiveIntegerValueObject)
class ProgramObject(Object):
objectType = 'program'
properties = \
@ -1780,7 +1825,8 @@ class ProgramObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(ProgramObject)
class PulseConverterObject(Object):
objectType = 'pulseConverter'
properties = \
@ -1818,7 +1864,8 @@ class PulseConverterObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(PulseConverterObject)
class ScheduleObject(Object):
objectType = 'schedule'
properties = \
@ -1844,7 +1891,8 @@ class ScheduleObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(ScheduleObject)
class StructuredViewObject(Object):
objectType = 'structuredView'
properties = \
@ -1854,7 +1902,8 @@ class StructuredViewObject(Object):
, OptionalProperty('subordinateAnnotations', ArrayOf(CharacterString))
]
@register_object_type
register_object_type(StructuredViewObject)
class TimePatternValueObject(Object):
objectType = 'timePatternValue'
properties = \
@ -1867,7 +1916,8 @@ class TimePatternValueObject(Object):
, OptionalProperty('relinquishDefault', Time)
]
@register_object_type
register_object_type(TimePatternValueObject)
class TimeValueObject(Object):
objectType = 'timeValue'
properties = \
@ -1880,7 +1930,8 @@ class TimeValueObject(Object):
, OptionalProperty('relinquishDefault', Time)
]
@register_object_type
register_object_type(TimeValueObject)
class TrendLogObject(Object):
objectType = 'trendLog'
properties = \
@ -1922,7 +1973,8 @@ class TrendLogObject(Object):
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
@register_object_type
register_object_type(TrendLogObject)
class TrendLogMultipleObject(Object):
objectType = 'trendLogMultiple'
properties = \
@ -1958,3 +2010,5 @@ class TrendLogMultipleObject(Object):
, OptionalProperty('eventAlgorithmInhibit', Boolean)
, OptionalProperty('reliabilityEvaluationInhibit', Boolean)
]
register_object_type(TrendLogMultipleObject)

View File

@ -7,10 +7,16 @@ Application Layer Protocol Data Units
from .errors import DecodingError
from .debugging import ModuleLogger, DebugContents, bacpypes_debugging
from .pdu import *
from .primitivedata import *
from .constructeddata import *
from .basetypes import *
from .pdu import PCI, PDUData, NPDU
from .primitivedata import Boolean, CharacterString, Enumerated, Integer, \
ObjectIdentifier, ObjectType, OctetString, Real, TagList, Unsigned, \
expand_enumerations
from .constructeddata import Any, Choice, Element, Sequence, SequenceOf
from .basetypes import ChannelValue, DateTime, DeviceAddress, ErrorType, \
EventState, EventTransitionBits, EventType, LifeSafetyOperation, \
NotificationParameters, NotifyType, ObjectPropertyReference, \
PropertyIdentifier, PropertyReference, PropertyValue, RecipientProcess, \
ResultFlags, Segmentation, TimeStamp, VTClass
# some debugging
_debug = 0

View File

@ -7,10 +7,16 @@ Application Layer Protocol Data Units
from .errors import DecodingError
from .debugging import ModuleLogger, DebugContents, bacpypes_debugging
from .pdu import *
from .primitivedata import *
from .constructeddata import *
from .basetypes import *
from .pdu import PCI, PDUData, NPDU
from .primitivedata import Boolean, CharacterString, Enumerated, Integer, \
ObjectIdentifier, ObjectType, OctetString, Real, TagList, Unsigned, \
expand_enumerations
from .constructeddata import Any, Choice, Element, Sequence, SequenceOf
from .basetypes import ChannelValue, DateTime, DeviceAddress, ErrorType, \
EventState, EventTransitionBits, EventType, LifeSafetyOperation, \
NotificationParameters, NotifyType, ObjectPropertyReference, \
PropertyIdentifier, PropertyReference, PropertyValue, RecipientProcess, \
ResultFlags, Segmentation, TimeStamp, VTClass
# some debugging
_debug = 0