How to use __reduce__ method in autotest

Best Python code snippet using autotest_python

rpcerrorlist.py

Source:rpcerrorlist.py Github

copy

Full Screen

2class AboutTooLongError(BadRequestError):3 def __init__(self, request):4 self.request = request5 super(Exception, self).__init__('The provided bio is too long' + self._fmt_request(self.request))6 def __reduce__(self):7 return type(self), (self.request,)8class AccessTokenExpiredError(BadRequestError):9 def __init__(self, request):10 self.request = request11 super(Exception, self).__init__('Bot token expired' + self._fmt_request(self.request))12 def __reduce__(self):13 return type(self), (self.request,)14class AccessTokenInvalidError(BadRequestError):15 def __init__(self, request):16 self.request = request17 super(Exception, self).__init__('The provided token is not valid' + self._fmt_request(self.request))18 def __reduce__(self):19 return type(self), (self.request,)20class ActiveUserRequiredError(UnauthorizedError):21 def __init__(self, request):22 self.request = request23 super(Exception, self).__init__('The method is only available to already activated users' + self._fmt_request(self.request))24 def __reduce__(self):25 return type(self), (self.request,)26class AdminsTooMuchError(BadRequestError):27 def __init__(self, request):28 self.request = request29 super(Exception, self).__init__('Too many admins' + self._fmt_request(self.request))30 def __reduce__(self):31 return type(self), (self.request,)32class AdminRankEmojiNotAllowedError(BadRequestError):33 def __init__(self, request):34 self.request = request35 super(Exception, self).__init__('Emoji are not allowed in admin titles or ranks' + self._fmt_request(self.request))36 def __reduce__(self):37 return type(self), (self.request,)38class AdminRankInvalidError(BadRequestError):39 def __init__(self, request):40 self.request = request41 super(Exception, self).__init__('The given admin title or rank was invalid (possibly larger than 16 characters)' + self._fmt_request(self.request))42 def __reduce__(self):43 return type(self), (self.request,)44class ApiIdInvalidError(BadRequestError):45 def __init__(self, request):46 self.request = request47 super(Exception, self).__init__('The api_id/api_hash combination is invalid' + self._fmt_request(self.request))48 def __reduce__(self):49 return type(self), (self.request,)50class ApiIdPublishedFloodError(BadRequestError):51 def __init__(self, request):52 self.request = request53 super(Exception, self).__init__("This API id was published somewhere, you can't use it now" + self._fmt_request(self.request))54 def __reduce__(self):55 return type(self), (self.request,)56class ArticleTitleEmptyError(BadRequestError):57 def __init__(self, request):58 self.request = request59 super(Exception, self).__init__('The title of the article is empty' + self._fmt_request(self.request))60 def __reduce__(self):61 return type(self), (self.request,)62class AuthBytesInvalidError(BadRequestError):63 def __init__(self, request):64 self.request = request65 super(Exception, self).__init__('The provided authorization is invalid' + self._fmt_request(self.request))66 def __reduce__(self):67 return type(self), (self.request,)68class AuthKeyDuplicatedError(AuthKeyError):69 def __init__(self, request):70 self.request = request71 super(Exception, self).__init__('The authorization key (session file) was used under two different IP addresses simultaneously, and can no longer be used. Use the same session exclusively, or use different sessions' + self._fmt_request(self.request))72 def __reduce__(self):73 return type(self), (self.request,)74class AuthKeyInvalidError(UnauthorizedError):75 def __init__(self, request):76 self.request = request77 super(Exception, self).__init__('The key is invalid' + self._fmt_request(self.request))78 def __reduce__(self):79 return type(self), (self.request,)80class AuthKeyPermEmptyError(UnauthorizedError):81 def __init__(self, request):82 self.request = request83 super(Exception, self).__init__('The method is unavailable for temporary authorization key, not bound to permanent' + self._fmt_request(self.request))84 def __reduce__(self):85 return type(self), (self.request,)86class AuthKeyUnregisteredError(UnauthorizedError):87 def __init__(self, request):88 self.request = request89 super(Exception, self).__init__('The key is not registered in the system' + self._fmt_request(self.request))90 def __reduce__(self):91 return type(self), (self.request,)92class AuthRestartError(ServerError):93 def __init__(self, request):94 self.request = request95 super(Exception, self).__init__('Restart the authorization process' + self._fmt_request(self.request))96 def __reduce__(self):97 return type(self), (self.request,)98class AuthTokenAlreadyAcceptedError(BadRequestError):99 def __init__(self, request):100 self.request = request101 super(Exception, self).__init__('The authorization token was already used' + self._fmt_request(self.request))102 def __reduce__(self):103 return type(self), (self.request,)104class AuthTokenExpiredError(BadRequestError):105 def __init__(self, request):106 self.request = request107 super(Exception, self).__init__('The provided authorization token has expired and the updated QR-code must be re-scanned' + self._fmt_request(self.request))108 def __reduce__(self):109 return type(self), (self.request,)110class AuthTokenInvalidError(BadRequestError):111 def __init__(self, request):112 self.request = request113 super(Exception, self).__init__('An invalid authorization token was provided' + self._fmt_request(self.request))114 def __reduce__(self):115 return type(self), (self.request,)116class BannedRightsInvalidError(BadRequestError):117 def __init__(self, request):118 self.request = request119 super(Exception, self).__init__('You cannot use that set of permissions in this request, i.e. restricting view_messages as a default' + self._fmt_request(self.request))120 def __reduce__(self):121 return type(self), (self.request,)122class BotsTooMuchError(BadRequestError):123 def __init__(self, request):124 self.request = request125 super(Exception, self).__init__('There are too many bots in this chat/channel' + self._fmt_request(self.request))126 def __reduce__(self):127 return type(self), (self.request,)128class BotChannelsNaError(BadRequestError):129 def __init__(self, request):130 self.request = request131 super(Exception, self).__init__("Bots can't edit admin privileges" + self._fmt_request(self.request))132 def __reduce__(self):133 return type(self), (self.request,)134class BotCommandDescriptionInvalidError(BadRequestError):135 def __init__(self, request):136 self.request = request137 super(Exception, self).__init__('The command description was empty, too long or had invalid characters used' + self._fmt_request(self.request))138 def __reduce__(self):139 return type(self), (self.request,)140class BotGroupsBlockedError(BadRequestError):141 def __init__(self, request):142 self.request = request143 super(Exception, self).__init__("This bot can't be added to groups" + self._fmt_request(self.request))144 def __reduce__(self):145 return type(self), (self.request,)146class BotInlineDisabledError(BadRequestError):147 def __init__(self, request):148 self.request = request149 super(Exception, self).__init__("This bot can't be used in inline mode" + self._fmt_request(self.request))150 def __reduce__(self):151 return type(self), (self.request,)152class BotInvalidError(BadRequestError):153 def __init__(self, request):154 self.request = request155 super(Exception, self).__init__('This is not a valid bot' + self._fmt_request(self.request))156 def __reduce__(self):157 return type(self), (self.request,)158class BotMethodInvalidError(BadRequestError):159 def __init__(self, request):160 self.request = request161 super(Exception, self).__init__('The API access for bot users is restricted. The method you tried to invoke cannot be executed as a bot' + self._fmt_request(self.request))162 def __reduce__(self):163 return type(self), (self.request,)164class BotMissingError(BadRequestError):165 def __init__(self, request):166 self.request = request167 super(Exception, self).__init__('This method can only be run by a bot' + self._fmt_request(self.request))168 def __reduce__(self):169 return type(self), (self.request,)170class BotPaymentsDisabledError(BadRequestError):171 def __init__(self, request):172 self.request = request173 super(Exception, self).__init__('This method can only be run by a bot' + self._fmt_request(self.request))174 def __reduce__(self):175 return type(self), (self.request,)176class BotPollsDisabledError(BadRequestError):177 def __init__(self, request):178 self.request = request179 super(Exception, self).__init__('You cannot create polls under a bot account' + self._fmt_request(self.request))180 def __reduce__(self):181 return type(self), (self.request,)182class BotResponseTimeoutError(BadRequestError):183 def __init__(self, request):184 self.request = request185 super(Exception, self).__init__('The bot did not answer to the callback query in time' + self._fmt_request(self.request))186 def __reduce__(self):187 return type(self), (self.request,)188class BroadcastForbiddenError(ForbiddenError):189 def __init__(self, request):190 self.request = request191 super(Exception, self).__init__('The request cannot be used in broadcast channels' + self._fmt_request(self.request))192 def __reduce__(self):193 return type(self), (self.request,)194class BroadcastIdInvalidError(BadRequestError):195 def __init__(self, request):196 self.request = request197 super(Exception, self).__init__('The channel is invalid' + self._fmt_request(self.request))198 def __reduce__(self):199 return type(self), (self.request,)200class BroadcastPublicVotersForbiddenError(BadRequestError):201 def __init__(self, request):202 self.request = request203 super(Exception, self).__init__('You cannot broadcast polls where the voters are public' + self._fmt_request(self.request))204 def __reduce__(self):205 return type(self), (self.request,)206class BroadcastRequiredError(BadRequestError):207 def __init__(self, request):208 self.request = request209 super(Exception, self).__init__('The request can only be used with a broadcast channel' + self._fmt_request(self.request))210 def __reduce__(self):211 return type(self), (self.request,)212class ButtonDataInvalidError(BadRequestError):213 def __init__(self, request):214 self.request = request215 super(Exception, self).__init__('The provided button data is invalid' + self._fmt_request(self.request))216 def __reduce__(self):217 return type(self), (self.request,)218class ButtonTypeInvalidError(BadRequestError):219 def __init__(self, request):220 self.request = request221 super(Exception, self).__init__('The type of one of the buttons you provided is invalid' + self._fmt_request(self.request))222 def __reduce__(self):223 return type(self), (self.request,)224class ButtonUrlInvalidError(BadRequestError):225 def __init__(self, request):226 self.request = request227 super(Exception, self).__init__('Button URL invalid' + self._fmt_request(self.request))228 def __reduce__(self):229 return type(self), (self.request,)230class CallAlreadyAcceptedError(BadRequestError):231 def __init__(self, request):232 self.request = request233 super(Exception, self).__init__('The call was already accepted' + self._fmt_request(self.request))234 def __reduce__(self):235 return type(self), (self.request,)236class CallAlreadyDeclinedError(BadRequestError):237 def __init__(self, request):238 self.request = request239 super(Exception, self).__init__('The call was already declined' + self._fmt_request(self.request))240 def __reduce__(self):241 return type(self), (self.request,)242class CallOccupyFailedError(ServerError):243 def __init__(self, request):244 self.request = request245 super(Exception, self).__init__('The call failed because the user is already making another call' + self._fmt_request(self.request))246 def __reduce__(self):247 return type(self), (self.request,)248class CallPeerInvalidError(BadRequestError):249 def __init__(self, request):250 self.request = request251 super(Exception, self).__init__('The provided call peer object is invalid' + self._fmt_request(self.request))252 def __reduce__(self):253 return type(self), (self.request,)254class CallProtocolFlagsInvalidError(BadRequestError):255 def __init__(self, request):256 self.request = request257 super(Exception, self).__init__('Call protocol flags invalid' + self._fmt_request(self.request))258 def __reduce__(self):259 return type(self), (self.request,)260class CdnMethodInvalidError(BadRequestError):261 def __init__(self, request):262 self.request = request263 super(Exception, self).__init__('This method cannot be invoked on a CDN server. Refer to https://core.telegram.org/cdn#schema for available methods' + self._fmt_request(self.request))264 def __reduce__(self):265 return type(self), (self.request,)266class ChannelsAdminPublicTooMuchError(BadRequestError):267 def __init__(self, request):268 self.request = request269 super(Exception, self).__init__("You're admin of too many public channels, make some channels private to change the username of this channel" + self._fmt_request(self.request))270 def __reduce__(self):271 return type(self), (self.request,)272class ChannelsTooMuchError(BadRequestError):273 def __init__(self, request):274 self.request = request275 super(Exception, self).__init__('You have joined too many channels/supergroups' + self._fmt_request(self.request))276 def __reduce__(self):277 return type(self), (self.request,)278class ChannelInvalidError(BadRequestError):279 def __init__(self, request):280 self.request = request281 super(Exception, self).__init__('Invalid channel object. Make sure to pass the right types, for instance making sure that the request is designed for channels or otherwise look for a different one more suited' + self._fmt_request(self.request))282 def __reduce__(self):283 return type(self), (self.request,)284class ChannelPrivateError(BadRequestError):285 def __init__(self, request):286 self.request = request287 super(Exception, self).__init__('The channel specified is private and you lack permission to access it. Another reason may be that you were banned from it' + self._fmt_request(self.request))288 def __reduce__(self):289 return type(self), (self.request,)290class ChannelPublicGroupNaError(ForbiddenError):291 def __init__(self, request):292 self.request = request293 super(Exception, self).__init__('channel/supergroup not available' + self._fmt_request(self.request))294 def __reduce__(self):295 return type(self), (self.request,)296class ChatAboutNotModifiedError(BadRequestError):297 def __init__(self, request):298 self.request = request299 super(Exception, self).__init__('About text has not changed' + self._fmt_request(self.request))300 def __reduce__(self):301 return type(self), (self.request,)302class ChatAboutTooLongError(BadRequestError):303 def __init__(self, request):304 self.request = request305 super(Exception, self).__init__('Chat about too long' + self._fmt_request(self.request))306 def __reduce__(self):307 return type(self), (self.request,)308class ChatAdminInviteRequiredError(ForbiddenError):309 def __init__(self, request):310 self.request = request311 super(Exception, self).__init__('You do not have the rights to do this' + self._fmt_request(self.request))312 def __reduce__(self):313 return type(self), (self.request,)314class ChatAdminRequiredError(BadRequestError):315 def __init__(self, request):316 self.request = request317 super(Exception, self).__init__('Chat admin privileges are required to do that in the specified chat (for example, to send a message in a channel which is not yours), or invalid permissions used for the channel or group' + self._fmt_request(self.request))318 def __reduce__(self):319 return type(self), (self.request,)320class ChatForbiddenError(BadRequestError):321 def __init__(self, request):322 self.request = request323 super(Exception, self).__init__('You cannot write in this chat' + self._fmt_request(self.request))324 def __reduce__(self):325 return type(self), (self.request,)326class ChatIdEmptyError(BadRequestError):327 def __init__(self, request):328 self.request = request329 super(Exception, self).__init__('The provided chat ID is empty' + self._fmt_request(self.request))330 def __reduce__(self):331 return type(self), (self.request,)332class ChatIdInvalidError(BadRequestError):333 def __init__(self, request):334 self.request = request335 super(Exception, self).__init__('Invalid object ID for a chat. Make sure to pass the right types, for instance making sure that the request is designed for chats (not channels/megagroups) or otherwise look for a different one more suited\\nAn example working with a megagroup and AddChatUserRequest, it will fail because megagroups are channels. Use InviteToChannelRequest instead' + self._fmt_request(self.request))336 def __reduce__(self):337 return type(self), (self.request,)338class ChatInvalidError(BadRequestError):339 def __init__(self, request):340 self.request = request341 super(Exception, self).__init__('The chat is invalid for this request' + self._fmt_request(self.request))342 def __reduce__(self):343 return type(self), (self.request,)344class ChatLinkExistsError(BadRequestError):345 def __init__(self, request):346 self.request = request347 super(Exception, self).__init__('The chat is linked to a channel and cannot be used in that request' + self._fmt_request(self.request))348 def __reduce__(self):349 return type(self), (self.request,)350class ChatNotModifiedError(BadRequestError):351 def __init__(self, request):352 self.request = request353 super(Exception, self).__init__("The chat or channel wasn't modified (title, invites, username, admins, etc. are the same)" + self._fmt_request(self.request))354 def __reduce__(self):355 return type(self), (self.request,)356class ChatRestrictedError(BadRequestError):357 def __init__(self, request):358 self.request = request359 super(Exception, self).__init__('The chat is restricted and cannot be used in that request' + self._fmt_request(self.request))360 def __reduce__(self):361 return type(self), (self.request,)362class ChatSendGifsForbiddenError(ForbiddenError):363 def __init__(self, request):364 self.request = request365 super(Exception, self).__init__("You can't send gifs in this chat" + self._fmt_request(self.request))366 def __reduce__(self):367 return type(self), (self.request,)368class ChatSendInlineForbiddenError(BadRequestError):369 def __init__(self, request):370 self.request = request371 super(Exception, self).__init__('You cannot send inline results in this chat' + self._fmt_request(self.request))372 def __reduce__(self):373 return type(self), (self.request,)374class ChatSendMediaForbiddenError(ForbiddenError):375 def __init__(self, request):376 self.request = request377 super(Exception, self).__init__("You can't send media in this chat" + self._fmt_request(self.request))378 def __reduce__(self):379 return type(self), (self.request,)380class ChatSendStickersForbiddenError(ForbiddenError):381 def __init__(self, request):382 self.request = request383 super(Exception, self).__init__("You can't send stickers in this chat" + self._fmt_request(self.request))384 def __reduce__(self):385 return type(self), (self.request,)386class ChatTitleEmptyError(BadRequestError):387 def __init__(self, request):388 self.request = request389 super(Exception, self).__init__('No chat title provided' + self._fmt_request(self.request))390 def __reduce__(self):391 return type(self), (self.request,)392class ChatWriteForbiddenError(ForbiddenError):393 def __init__(self, request):394 self.request = request395 super(Exception, self).__init__("You can't write in this chat" + self._fmt_request(self.request))396 def __reduce__(self):397 return type(self), (self.request,)398class CodeEmptyError(BadRequestError):399 def __init__(self, request):400 self.request = request401 super(Exception, self).__init__('The provided code is empty' + self._fmt_request(self.request))402 def __reduce__(self):403 return type(self), (self.request,)404class CodeHashInvalidError(BadRequestError):405 def __init__(self, request):406 self.request = request407 super(Exception, self).__init__('Code hash invalid' + self._fmt_request(self.request))408 def __reduce__(self):409 return type(self), (self.request,)410class CodeInvalidError(BadRequestError):411 def __init__(self, request):412 self.request = request413 super(Exception, self).__init__('Code invalid (i.e. from email)' + self._fmt_request(self.request))414 def __reduce__(self):415 return type(self), (self.request,)416class ConnectionApiIdInvalidError(BadRequestError):417 def __init__(self, request):418 self.request = request419 super(Exception, self).__init__('The provided API id is invalid' + self._fmt_request(self.request))420 def __reduce__(self):421 return type(self), (self.request,)422class ConnectionDeviceModelEmptyError(BadRequestError):423 def __init__(self, request):424 self.request = request425 super(Exception, self).__init__('Device model empty' + self._fmt_request(self.request))426 def __reduce__(self):427 return type(self), (self.request,)428class ConnectionLangPackInvalidError(BadRequestError):429 def __init__(self, request):430 self.request = request431 super(Exception, self).__init__('The specified language pack is not valid. This is meant to be used by official applications only so far, leave it empty' + self._fmt_request(self.request))432 def __reduce__(self):433 return type(self), (self.request,)434class ConnectionLayerInvalidError(BadRequestError):435 def __init__(self, request):436 self.request = request437 super(Exception, self).__init__('The very first request must always be InvokeWithLayerRequest' + self._fmt_request(self.request))438 def __reduce__(self):439 return type(self), (self.request,)440class ConnectionNotInitedError(BadRequestError):441 def __init__(self, request):442 self.request = request443 super(Exception, self).__init__('Connection not initialized' + self._fmt_request(self.request))444 def __reduce__(self):445 return type(self), (self.request,)446class ConnectionSystemEmptyError(BadRequestError):447 def __init__(self, request):448 self.request = request449 super(Exception, self).__init__('Connection system empty' + self._fmt_request(self.request))450 def __reduce__(self):451 return type(self), (self.request,)452class ConnectionSystemLangCodeEmptyError(BadRequestError):453 def __init__(self, request):454 self.request = request455 super(Exception, self).__init__('The system language string was empty during connection' + self._fmt_request(self.request))456 def __reduce__(self):457 return type(self), (self.request,)458class ContactIdInvalidError(BadRequestError):459 def __init__(self, request):460 self.request = request461 super(Exception, self).__init__('The provided contact ID is invalid' + self._fmt_request(self.request))462 def __reduce__(self):463 return type(self), (self.request,)464class ContactNameEmptyError(BadRequestError):465 def __init__(self, request):466 self.request = request467 super(Exception, self).__init__('The provided contact name cannot be empty' + self._fmt_request(self.request))468 def __reduce__(self):469 return type(self), (self.request,)470class DataInvalidError(BadRequestError):471 def __init__(self, request):472 self.request = request473 super(Exception, self).__init__('Encrypted data invalid' + self._fmt_request(self.request))474 def __reduce__(self):475 return type(self), (self.request,)476class DataJsonInvalidError(BadRequestError):477 def __init__(self, request):478 self.request = request479 super(Exception, self).__init__('The provided JSON data is invalid' + self._fmt_request(self.request))480 def __reduce__(self):481 return type(self), (self.request,)482class DateEmptyError(BadRequestError):483 def __init__(self, request):484 self.request = request485 super(Exception, self).__init__('Date empty' + self._fmt_request(self.request))486 def __reduce__(self):487 return type(self), (self.request,)488class DcIdInvalidError(BadRequestError):489 def __init__(self, request):490 self.request = request491 super(Exception, self).__init__('This occurs when an authorization is tried to be exported for the same data center one is currently connected to' + self._fmt_request(self.request))492 def __reduce__(self):493 return type(self), (self.request,)494class DhGAInvalidError(BadRequestError):495 def __init__(self, request):496 self.request = request497 super(Exception, self).__init__('g_a invalid' + self._fmt_request(self.request))498 def __reduce__(self):499 return type(self), (self.request,)500class EmailHashExpiredError(BadRequestError):501 def __init__(self, request):502 self.request = request503 super(Exception, self).__init__('The email hash expired and cannot be used to verify it' + self._fmt_request(self.request))504 def __reduce__(self):505 return type(self), (self.request,)506class EmailInvalidError(BadRequestError):507 def __init__(self, request):508 self.request = request509 super(Exception, self).__init__('The given email is invalid' + self._fmt_request(self.request))510 def __reduce__(self):511 return type(self), (self.request,)512class EmailUnconfirmedError(BadRequestError):513 def __init__(self, request, capture=0):514 self.request = request515 self.code_length = int(capture)516 super(Exception, self).__init__('Email unconfirmed, the length of the code must be {code_length}'.format(code_length=self.code_length) + self._fmt_request(self.request))517 def __reduce__(self):518 return type(self), (self.request, self.code_length)519class EmoticonEmptyError(BadRequestError):520 def __init__(self, request):521 self.request = request522 super(Exception, self).__init__('The emoticon field cannot be empty' + self._fmt_request(self.request))523 def __reduce__(self):524 return type(self), (self.request,)525class EmoticonInvalidError(BadRequestError):526 def __init__(self, request):527 self.request = request528 super(Exception, self).__init__('The specified emoticon cannot be used or was not a emoticon' + self._fmt_request(self.request))529 def __reduce__(self):530 return type(self), (self.request,)531class EncryptedMessageInvalidError(BadRequestError):532 def __init__(self, request):533 self.request = request534 super(Exception, self).__init__('Encrypted message invalid' + self._fmt_request(self.request))535 def __reduce__(self):536 return type(self), (self.request,)537class EncryptionAlreadyAcceptedError(BadRequestError):538 def __init__(self, request):539 self.request = request540 super(Exception, self).__init__('Secret chat already accepted' + self._fmt_request(self.request))541 def __reduce__(self):542 return type(self), (self.request,)543class EncryptionAlreadyDeclinedError(BadRequestError):544 def __init__(self, request):545 self.request = request546 super(Exception, self).__init__('The secret chat was already declined' + self._fmt_request(self.request))547 def __reduce__(self):548 return type(self), (self.request,)549class EncryptionDeclinedError(BadRequestError):550 def __init__(self, request):551 self.request = request552 super(Exception, self).__init__('The secret chat was declined' + self._fmt_request(self.request))553 def __reduce__(self):554 return type(self), (self.request,)555class EncryptionIdInvalidError(BadRequestError):556 def __init__(self, request):557 self.request = request558 super(Exception, self).__init__('The provided secret chat ID is invalid' + self._fmt_request(self.request))559 def __reduce__(self):560 return type(self), (self.request,)561class EncryptionOccupyFailedError(ServerError):562 def __init__(self, request):563 self.request = request564 super(Exception, self).__init__('TDLib developer claimed it is not an error while accepting secret chats and 500 is used instead of 420' + self._fmt_request(self.request))565 def __reduce__(self):566 return type(self), (self.request,)567class EntitiesTooLongError(BadRequestError):568 def __init__(self, request):569 self.request = request570 super(Exception, self).__init__('It is no longer possible to send such long data inside entity tags (for example inline text URLs)' + self._fmt_request(self.request))571 def __reduce__(self):572 return type(self), (self.request,)573class EntityMentionUserInvalidError(BadRequestError):574 def __init__(self, request):575 self.request = request576 super(Exception, self).__init__("You can't use this entity" + self._fmt_request(self.request))577 def __reduce__(self):578 return type(self), (self.request,)579class ErrorTextEmptyError(BadRequestError):580 def __init__(self, request):581 self.request = request582 super(Exception, self).__init__('The provided error message is empty' + self._fmt_request(self.request))583 def __reduce__(self):584 return type(self), (self.request,)585class ExportCardInvalidError(BadRequestError):586 def __init__(self, request):587 self.request = request588 super(Exception, self).__init__('Provided card is invalid' + self._fmt_request(self.request))589 def __reduce__(self):590 return type(self), (self.request,)591class ExternalUrlInvalidError(BadRequestError):592 def __init__(self, request):593 self.request = request594 super(Exception, self).__init__('External URL invalid' + self._fmt_request(self.request))595 def __reduce__(self):596 return type(self), (self.request,)597class FieldNameEmptyError(BadRequestError):598 def __init__(self, request):599 self.request = request600 super(Exception, self).__init__('The field with the name FIELD_NAME is missing' + self._fmt_request(self.request))601 def __reduce__(self):602 return type(self), (self.request,)603class FieldNameInvalidError(BadRequestError):604 def __init__(self, request):605 self.request = request606 super(Exception, self).__init__('The field with the name FIELD_NAME is invalid' + self._fmt_request(self.request))607 def __reduce__(self):608 return type(self), (self.request,)609class FileIdInvalidError(BadRequestError):610 def __init__(self, request):611 self.request = request612 super(Exception, self).__init__('The provided file id is invalid. Make sure all parameters are present, have the correct type and are not empty (ID, access hash, file reference, thumb size ...)' + self._fmt_request(self.request))613 def __reduce__(self):614 return type(self), (self.request,)615class FileMigrateError(InvalidDCError):616 def __init__(self, request, capture=0):617 self.request = request618 self.new_dc = int(capture)619 super(Exception, self).__init__('The file to be accessed is currently stored in DC {new_dc}'.format(new_dc=self.new_dc) + self._fmt_request(self.request))620 def __reduce__(self):621 return type(self), (self.request, self.new_dc)622class FilePartsInvalidError(BadRequestError):623 def __init__(self, request):624 self.request = request625 super(Exception, self).__init__('The number of file parts is invalid' + self._fmt_request(self.request))626 def __reduce__(self):627 return type(self), (self.request,)628class FilePart0MissingError(BadRequestError):629 def __init__(self, request):630 self.request = request631 super(Exception, self).__init__('File part 0 missing' + self._fmt_request(self.request))632 def __reduce__(self):633 return type(self), (self.request,)634class FilePartEmptyError(BadRequestError):635 def __init__(self, request):636 self.request = request637 super(Exception, self).__init__('The provided file part is empty' + self._fmt_request(self.request))638 def __reduce__(self):639 return type(self), (self.request,)640class FilePartInvalidError(BadRequestError):641 def __init__(self, request):642 self.request = request643 super(Exception, self).__init__('The file part number is invalid' + self._fmt_request(self.request))644 def __reduce__(self):645 return type(self), (self.request,)646class FilePartLengthInvalidError(BadRequestError):647 def __init__(self, request):648 self.request = request649 super(Exception, self).__init__('The length of a file part is invalid' + self._fmt_request(self.request))650 def __reduce__(self):651 return type(self), (self.request,)652class FilePartSizeChangedError(BadRequestError):653 def __init__(self, request):654 self.request = request655 super(Exception, self).__init__('The file part size (chunk size) cannot change during upload' + self._fmt_request(self.request))656 def __reduce__(self):657 return type(self), (self.request,)658class FilePartSizeInvalidError(BadRequestError):659 def __init__(self, request):660 self.request = request661 super(Exception, self).__init__('The provided file part size is invalid' + self._fmt_request(self.request))662 def __reduce__(self):663 return type(self), (self.request,)664class FilePartMissingError(BadRequestError):665 def __init__(self, request, capture=0):666 self.request = request667 self.which = int(capture)668 super(Exception, self).__init__('Part {which} of the file is missing from storage'.format(which=self.which) + self._fmt_request(self.request))669 def __reduce__(self):670 return type(self), (self.request, self.which)671class FileReferenceEmptyError(BadRequestError):672 def __init__(self, request):673 self.request = request674 super(Exception, self).__init__('The file reference must exist to access the media and it cannot be empty' + self._fmt_request(self.request))675 def __reduce__(self):676 return type(self), (self.request,)677class FileReferenceExpiredError(BadRequestError):678 def __init__(self, request):679 self.request = request680 super(Exception, self).__init__('The file reference has expired and is no longer valid or it belongs to self-destructing media and cannot be resent' + self._fmt_request(self.request))681 def __reduce__(self):682 return type(self), (self.request,)683class FilerefUpgradeNeededError(AuthKeyError):684 def __init__(self, request):685 self.request = request686 super(Exception, self).__init__('The file reference needs to be refreshed before being used again' + self._fmt_request(self.request))687 def __reduce__(self):688 return type(self), (self.request,)689class FirstNameInvalidError(BadRequestError):690 def __init__(self, request):691 self.request = request692 super(Exception, self).__init__('The first name is invalid' + self._fmt_request(self.request))693 def __reduce__(self):694 return type(self), (self.request,)695class FloodTestPhoneWaitError(FloodError):696 def __init__(self, request, capture=0):697 self.request = request698 self.seconds = int(capture)699 super(Exception, self).__init__('A wait of {seconds} seconds is required in the test servers'.format(seconds=self.seconds) + self._fmt_request(self.request))700 def __reduce__(self):701 return type(self), (self.request, self.seconds)702class FloodWaitError(FloodError):703 def __init__(self, request, capture=0):704 self.request = request705 self.seconds = int(capture)706 super(Exception, self).__init__('A wait of {seconds} seconds is required'.format(seconds=self.seconds) + self._fmt_request(self.request))707 def __reduce__(self):708 return type(self), (self.request, self.seconds)709class FolderIdEmptyError(BadRequestError):710 def __init__(self, request):711 self.request = request712 super(Exception, self).__init__('The folder you tried to delete was already empty' + self._fmt_request(self.request))713 def __reduce__(self):714 return type(self), (self.request,)715class FolderIdInvalidError(BadRequestError):716 def __init__(self, request):717 self.request = request718 super(Exception, self).__init__('The folder you tried to use was not valid' + self._fmt_request(self.request))719 def __reduce__(self):720 return type(self), (self.request,)721class FreshChangeAdminsForbiddenError(BadRequestError):722 def __init__(self, request):723 self.request = request724 super(Exception, self).__init__('Recently logged-in users cannot add or change admins' + self._fmt_request(self.request))725 def __reduce__(self):726 return type(self), (self.request,)727class FreshChangePhoneForbiddenError(AuthKeyError):728 def __init__(self, request):729 self.request = request730 super(Exception, self).__init__('Recently logged-in users cannot use this request' + self._fmt_request(self.request))731 def __reduce__(self):732 return type(self), (self.request,)733class FreshResetAuthorisationForbiddenError(AuthKeyError):734 def __init__(self, request):735 self.request = request736 super(Exception, self).__init__('The current session is too new and cannot be used to reset other authorisations yet' + self._fmt_request(self.request))737 def __reduce__(self):738 return type(self), (self.request,)739class GameBotInvalidError(BadRequestError):740 def __init__(self, request):741 self.request = request742 super(Exception, self).__init__('You cannot send that game with the current bot' + self._fmt_request(self.request))743 def __reduce__(self):744 return type(self), (self.request,)745class GifIdInvalidError(BadRequestError):746 def __init__(self, request):747 self.request = request748 super(Exception, self).__init__('The provided GIF ID is invalid' + self._fmt_request(self.request))749 def __reduce__(self):750 return type(self), (self.request,)751class GroupedMediaInvalidError(BadRequestError):752 def __init__(self, request):753 self.request = request754 super(Exception, self).__init__('Invalid grouped media' + self._fmt_request(self.request))755 def __reduce__(self):756 return type(self), (self.request,)757class HashInvalidError(BadRequestError):758 def __init__(self, request):759 self.request = request760 super(Exception, self).__init__('The provided hash is invalid' + self._fmt_request(self.request))761 def __reduce__(self):762 return type(self), (self.request,)763class HistoryGetFailedError(ServerError):764 def __init__(self, request):765 self.request = request766 super(Exception, self).__init__('Fetching of history failed' + self._fmt_request(self.request))767 def __reduce__(self):768 return type(self), (self.request,)769class ImageProcessFailedError(BadRequestError):770 def __init__(self, request):771 self.request = request772 super(Exception, self).__init__('Failure while processing image' + self._fmt_request(self.request))773 def __reduce__(self):774 return type(self), (self.request,)775class InlineBotRequiredError(ForbiddenError):776 def __init__(self, request):777 self.request = request778 super(Exception, self).__init__('The action must be performed through an inline bot callback' + self._fmt_request(self.request))779 def __reduce__(self):780 return type(self), (self.request,)781class InlineResultExpiredError(BadRequestError):782 def __init__(self, request):783 self.request = request784 super(Exception, self).__init__('The inline query expired' + self._fmt_request(self.request))785 def __reduce__(self):786 return type(self), (self.request,)787class InputConstructorInvalidError(BadRequestError):788 def __init__(self, request):789 self.request = request790 super(Exception, self).__init__('The provided constructor is invalid' + self._fmt_request(self.request))791 def __reduce__(self):792 return type(self), (self.request,)793class InputFetchErrorError(BadRequestError):794 def __init__(self, request):795 self.request = request796 super(Exception, self).__init__('An error occurred while deserializing TL parameters' + self._fmt_request(self.request))797 def __reduce__(self):798 return type(self), (self.request,)799class InputFetchFailError(BadRequestError):800 def __init__(self, request):801 self.request = request802 super(Exception, self).__init__('Failed deserializing TL payload' + self._fmt_request(self.request))803 def __reduce__(self):804 return type(self), (self.request,)805class InputLayerInvalidError(BadRequestError):806 def __init__(self, request):807 self.request = request808 super(Exception, self).__init__('The provided layer is invalid' + self._fmt_request(self.request))809 def __reduce__(self):810 return type(self), (self.request,)811class InputMethodInvalidError(BadRequestError):812 def __init__(self, request):813 self.request = request814 super(Exception, self).__init__('The invoked method does not exist anymore or has never existed' + self._fmt_request(self.request))815 def __reduce__(self):816 return type(self), (self.request,)817class InputRequestTooLongError(BadRequestError):818 def __init__(self, request):819 self.request = request820 super(Exception, self).__init__('The input request was too long. This may be a bug in the library as it can occur when serializing more bytes than it should (like appending the vector constructor code at the end of a message)' + self._fmt_request(self.request))821 def __reduce__(self):822 return type(self), (self.request,)823class InputUserDeactivatedError(BadRequestError):824 def __init__(self, request):825 self.request = request826 super(Exception, self).__init__('The specified user was deleted' + self._fmt_request(self.request))827 def __reduce__(self):828 return type(self), (self.request,)829class InterdcCallErrorError(BadRequestError):830 def __init__(self, request, capture=0):831 self.request = request832 self.dc = int(capture)833 super(Exception, self).__init__('An error occurred while communicating with DC {dc}'.format(dc=self.dc) + self._fmt_request(self.request))834 def __reduce__(self):835 return type(self), (self.request, self.dc)836class InterdcCallRichErrorError(BadRequestError):837 def __init__(self, request, capture=0):838 self.request = request839 self.dc = int(capture)840 super(Exception, self).__init__('A rich error occurred while communicating with DC {dc}'.format(dc=self.dc) + self._fmt_request(self.request))841 def __reduce__(self):842 return type(self), (self.request, self.dc)843class InviteHashEmptyError(BadRequestError):844 def __init__(self, request):845 self.request = request846 super(Exception, self).__init__('The invite hash is empty' + self._fmt_request(self.request))847 def __reduce__(self):848 return type(self), (self.request,)849class InviteHashExpiredError(BadRequestError):850 def __init__(self, request):851 self.request = request852 super(Exception, self).__init__('The chat the user tried to join has expired and is not valid anymore' + self._fmt_request(self.request))853 def __reduce__(self):854 return type(self), (self.request,)855class InviteHashInvalidError(BadRequestError):856 def __init__(self, request):857 self.request = request858 super(Exception, self).__init__('The invite hash is invalid' + self._fmt_request(self.request))859 def __reduce__(self):860 return type(self), (self.request,)861class LangPackInvalidError(BadRequestError):862 def __init__(self, request):863 self.request = request864 super(Exception, self).__init__('The provided language pack is invalid' + self._fmt_request(self.request))865 def __reduce__(self):866 return type(self), (self.request,)867class LastnameInvalidError(BadRequestError):868 def __init__(self, request):869 self.request = request870 super(Exception, self).__init__('The last name is invalid' + self._fmt_request(self.request))871 def __reduce__(self):872 return type(self), (self.request,)873class LimitInvalidError(BadRequestError):874 def __init__(self, request):875 self.request = request876 super(Exception, self).__init__('An invalid limit was provided. See https://core.telegram.org/api/files#downloading-files' + self._fmt_request(self.request))877 def __reduce__(self):878 return type(self), (self.request,)879class LinkNotModifiedError(BadRequestError):880 def __init__(self, request):881 self.request = request882 super(Exception, self).__init__('The channel is already linked to this group' + self._fmt_request(self.request))883 def __reduce__(self):884 return type(self), (self.request,)885class LocationInvalidError(BadRequestError):886 def __init__(self, request):887 self.request = request888 super(Exception, self).__init__('The location given for a file was invalid. See https://core.telegram.org/api/files#downloading-files' + self._fmt_request(self.request))889 def __reduce__(self):890 return type(self), (self.request,)891class MaxIdInvalidError(BadRequestError):892 def __init__(self, request):893 self.request = request894 super(Exception, self).__init__('The provided max ID is invalid' + self._fmt_request(self.request))895 def __reduce__(self):896 return type(self), (self.request,)897class MaxQtsInvalidError(BadRequestError):898 def __init__(self, request):899 self.request = request900 super(Exception, self).__init__('The provided QTS were invalid' + self._fmt_request(self.request))901 def __reduce__(self):902 return type(self), (self.request,)903class Md5ChecksumInvalidError(BadRequestError):904 def __init__(self, request):905 self.request = request906 super(Exception, self).__init__('The MD5 check-sums do not match' + self._fmt_request(self.request))907 def __reduce__(self):908 return type(self), (self.request,)909class MediaCaptionTooLongError(BadRequestError):910 def __init__(self, request):911 self.request = request912 super(Exception, self).__init__('The caption is too long' + self._fmt_request(self.request))913 def __reduce__(self):914 return type(self), (self.request,)915class MediaEmptyError(BadRequestError):916 def __init__(self, request):917 self.request = request918 super(Exception, self).__init__('The provided media object is invalid or the current account may not be able to send it (such as games as users)' + self._fmt_request(self.request))919 def __reduce__(self):920 return type(self), (self.request,)921class MediaInvalidError(BadRequestError):922 def __init__(self, request):923 self.request = request924 super(Exception, self).__init__('Media invalid' + self._fmt_request(self.request))925 def __reduce__(self):926 return type(self), (self.request,)927class MediaNewInvalidError(BadRequestError):928 def __init__(self, request):929 self.request = request930 super(Exception, self).__init__('The new media to edit the message with is invalid (such as stickers or voice notes)' + self._fmt_request(self.request))931 def __reduce__(self):932 return type(self), (self.request,)933class MediaPrevInvalidError(BadRequestError):934 def __init__(self, request):935 self.request = request936 super(Exception, self).__init__('The old media cannot be edited with anything else (such as stickers or voice notes)' + self._fmt_request(self.request))937 def __reduce__(self):938 return type(self), (self.request,)939class MegagroupIdInvalidError(BadRequestError):940 def __init__(self, request):941 self.request = request942 super(Exception, self).__init__('The group is invalid' + self._fmt_request(self.request))943 def __reduce__(self):944 return type(self), (self.request,)945class MegagroupPrehistoryHiddenError(BadRequestError):946 def __init__(self, request):947 self.request = request948 super(Exception, self).__init__("You can't set this discussion group because it's history is hidden" + self._fmt_request(self.request))949 def __reduce__(self):950 return type(self), (self.request,)951class MegagroupRequiredError(BadRequestError):952 def __init__(self, request):953 self.request = request954 super(Exception, self).__init__('The request can only be used with a megagroup channel' + self._fmt_request(self.request))955 def __reduce__(self):956 return type(self), (self.request,)957class MemberNoLocationError(ServerError):958 def __init__(self, request):959 self.request = request960 super(Exception, self).__init__("An internal failure occurred while fetching user info (couldn't find location)" + self._fmt_request(self.request))961 def __reduce__(self):962 return type(self), (self.request,)963class MemberOccupyPrimaryLocFailedError(ServerError):964 def __init__(self, request):965 self.request = request966 super(Exception, self).__init__('Occupation of primary member location failed' + self._fmt_request(self.request))967 def __reduce__(self):968 return type(self), (self.request,)969class MessageAuthorRequiredError(ForbiddenError):970 def __init__(self, request):971 self.request = request972 super(Exception, self).__init__('Message author required' + self._fmt_request(self.request))973 def __reduce__(self):974 return type(self), (self.request,)975class MessageDeleteForbiddenError(ForbiddenError):976 def __init__(self, request):977 self.request = request978 super(Exception, self).__init__("You can't delete one of the messages you tried to delete, most likely because it is a service message." + self._fmt_request(self.request))979 def __reduce__(self):980 return type(self), (self.request,)981class MessageEditTimeExpiredError(BadRequestError):982 def __init__(self, request):983 self.request = request984 super(Exception, self).__init__("You can't edit this message anymore, too much time has passed since its creation." + self._fmt_request(self.request))985 def __reduce__(self):986 return type(self), (self.request,)987class MessageEmptyError(BadRequestError):988 def __init__(self, request):989 self.request = request990 super(Exception, self).__init__('Empty or invalid UTF-8 message was sent' + self._fmt_request(self.request))991 def __reduce__(self):992 return type(self), (self.request,)993class MessageIdsEmptyError(BadRequestError):994 def __init__(self, request):995 self.request = request996 super(Exception, self).__init__('No message ids were provided' + self._fmt_request(self.request))997 def __reduce__(self):998 return type(self), (self.request,)999class MessageIdInvalidError(BadRequestError):1000 def __init__(self, request):1001 self.request = request1002 super(Exception, self).__init__("The specified message ID is invalid or you can't do that operation on such message" + self._fmt_request(self.request))1003 def __reduce__(self):1004 return type(self), (self.request,)1005class MessageNotModifiedError(BadRequestError):1006 def __init__(self, request):1007 self.request = request1008 super(Exception, self).__init__('Content of the message was not modified' + self._fmt_request(self.request))1009 def __reduce__(self):1010 return type(self), (self.request,)1011class MessagePollClosedError(BadRequestError):1012 def __init__(self, request):1013 self.request = request1014 super(Exception, self).__init__('The poll was closed and can no longer be voted on' + self._fmt_request(self.request))1015 def __reduce__(self):1016 return type(self), (self.request,)1017class MessageTooLongError(BadRequestError):1018 def __init__(self, request):1019 self.request = request1020 super(Exception, self).__init__('Message was too long. Current maximum length is 4096 UTF-8 characters' + self._fmt_request(self.request))1021 def __reduce__(self):1022 return type(self), (self.request,)1023class MethodInvalidError(BadRequestError):1024 def __init__(self, request):1025 self.request = request1026 super(Exception, self).__init__('The API method is invalid and cannot be used' + self._fmt_request(self.request))1027 def __reduce__(self):1028 return type(self), (self.request,)1029class MsgidDecreaseRetryError(ServerError):1030 def __init__(self, request):1031 self.request = request1032 super(Exception, self).__init__('The request should be retried with a lower message ID' + self._fmt_request(self.request))1033 def __reduce__(self):1034 return type(self), (self.request,)1035class MsgIdInvalidError(BadRequestError):1036 def __init__(self, request):1037 self.request = request1038 super(Exception, self).__init__('The message ID used in the peer was invalid' + self._fmt_request(self.request))1039 def __reduce__(self):1040 return type(self), (self.request,)1041class MsgWaitFailedError(BadRequestError):1042 def __init__(self, request):1043 self.request = request1044 super(Exception, self).__init__('A waiting call returned an error' + self._fmt_request(self.request))1045 def __reduce__(self):1046 return type(self), (self.request,)1047class MtSendQueueTooLongError(ServerError):1048 def __init__(self, request):1049 self.request = request1050 super(Exception, self).__init__('' + self._fmt_request(self.request))1051 def __reduce__(self):1052 return type(self), (self.request,)1053class NeedChatInvalidError(ServerError):1054 def __init__(self, request):1055 self.request = request1056 super(Exception, self).__init__('The provided chat is invalid' + self._fmt_request(self.request))1057 def __reduce__(self):1058 return type(self), (self.request,)1059class NeedMemberInvalidError(ServerError):1060 def __init__(self, request):1061 self.request = request1062 super(Exception, self).__init__('The provided member is invalid or does not exist (for example a thumb size)' + self._fmt_request(self.request))1063 def __reduce__(self):1064 return type(self), (self.request,)1065class NetworkMigrateError(InvalidDCError):1066 def __init__(self, request, capture=0):1067 self.request = request1068 self.new_dc = int(capture)1069 super(Exception, self).__init__('The source IP address is associated with DC {new_dc}'.format(new_dc=self.new_dc) + self._fmt_request(self.request))1070 def __reduce__(self):1071 return type(self), (self.request, self.new_dc)1072class NewSaltInvalidError(BadRequestError):1073 def __init__(self, request):1074 self.request = request1075 super(Exception, self).__init__('The new salt is invalid' + self._fmt_request(self.request))1076 def __reduce__(self):1077 return type(self), (self.request,)1078class NewSettingsInvalidError(BadRequestError):1079 def __init__(self, request):1080 self.request = request1081 super(Exception, self).__init__('The new settings are invalid' + self._fmt_request(self.request))1082 def __reduce__(self):1083 return type(self), (self.request,)1084class OffsetInvalidError(BadRequestError):1085 def __init__(self, request):1086 self.request = request1087 super(Exception, self).__init__('The given offset was invalid, it must be divisible by 1KB. See https://core.telegram.org/api/files#downloading-files' + self._fmt_request(self.request))1088 def __reduce__(self):1089 return type(self), (self.request,)1090class OffsetPeerIdInvalidError(BadRequestError):1091 def __init__(self, request):1092 self.request = request1093 super(Exception, self).__init__('The provided offset peer is invalid' + self._fmt_request(self.request))1094 def __reduce__(self):1095 return type(self), (self.request,)1096class OptionInvalidError(BadRequestError):1097 def __init__(self, request):1098 self.request = request1099 super(Exception, self).__init__('The option specified is invalid and does not exist in the target poll' + self._fmt_request(self.request))1100 def __reduce__(self):1101 return type(self), (self.request,)1102class OptionsTooMuchError(BadRequestError):1103 def __init__(self, request):1104 self.request = request1105 super(Exception, self).__init__('You defined too many options for the poll' + self._fmt_request(self.request))1106 def __reduce__(self):1107 return type(self), (self.request,)1108class PackShortNameInvalidError(BadRequestError):1109 def __init__(self, request):1110 self.request = request1111 super(Exception, self).__init__('Invalid sticker pack name. It must begin with a letter, can\'t contain consecutive underscores and must end in "_by_<bot username>".' + self._fmt_request(self.request))1112 def __reduce__(self):1113 return type(self), (self.request,)1114class PackShortNameOccupiedError(BadRequestError):1115 def __init__(self, request):1116 self.request = request1117 super(Exception, self).__init__('A stickerpack with this name already exists' + self._fmt_request(self.request))1118 def __reduce__(self):1119 return type(self), (self.request,)1120class ParticipantsTooFewError(BadRequestError):1121 def __init__(self, request):1122 self.request = request1123 super(Exception, self).__init__('Not enough participants' + self._fmt_request(self.request))1124 def __reduce__(self):1125 return type(self), (self.request,)1126class ParticipantCallFailedError(ServerError):1127 def __init__(self, request):1128 self.request = request1129 super(Exception, self).__init__('Failure while making call' + self._fmt_request(self.request))1130 def __reduce__(self):1131 return type(self), (self.request,)1132class ParticipantVersionOutdatedError(BadRequestError):1133 def __init__(self, request):1134 self.request = request1135 super(Exception, self).__init__('The other participant does not use an up to date telegram client with support for calls' + self._fmt_request(self.request))1136 def __reduce__(self):1137 return type(self), (self.request,)1138class PasswordEmptyError(BadRequestError):1139 def __init__(self, request):1140 self.request = request1141 super(Exception, self).__init__('The provided password is empty' + self._fmt_request(self.request))1142 def __reduce__(self):1143 return type(self), (self.request,)1144class PasswordHashInvalidError(BadRequestError):1145 def __init__(self, request):1146 self.request = request1147 super(Exception, self).__init__('The password (and thus its hash value) you entered is invalid' + self._fmt_request(self.request))1148 def __reduce__(self):1149 return type(self), (self.request,)1150class PasswordMissingError(BadRequestError):1151 def __init__(self, request):1152 self.request = request1153 super(Exception, self).__init__('The account must have 2-factor authentication enabled (a password) before this method can be used' + self._fmt_request(self.request))1154 def __reduce__(self):1155 return type(self), (self.request,)1156class PasswordRequiredError(BadRequestError):1157 def __init__(self, request):1158 self.request = request1159 super(Exception, self).__init__('The account must have 2-factor authentication enabled (a password) before this method can be used' + self._fmt_request(self.request))1160 def __reduce__(self):1161 return type(self), (self.request,)1162class PasswordTooFreshError(BadRequestError):1163 def __init__(self, request, capture=0):1164 self.request = request1165 self.seconds = int(capture)1166 super(Exception, self).__init__('The password was added too recently and {seconds} seconds must pass before using the method'.format(seconds=self.seconds) + self._fmt_request(self.request))1167 def __reduce__(self):1168 return type(self), (self.request, self.seconds)1169class PaymentProviderInvalidError(BadRequestError):1170 def __init__(self, request):1171 self.request = request1172 super(Exception, self).__init__('The payment provider was not recognised or its token was invalid' + self._fmt_request(self.request))1173 def __reduce__(self):1174 return type(self), (self.request,)1175class PeerFloodError(BadRequestError):1176 def __init__(self, request):1177 self.request = request1178 super(Exception, self).__init__('Too many requests' + self._fmt_request(self.request))1179 def __reduce__(self):1180 return type(self), (self.request,)1181class PeerIdInvalidError(BadRequestError):1182 def __init__(self, request):1183 self.request = request1184 super(Exception, self).__init__('An invalid Peer was used. Make sure to pass the right peer type' + self._fmt_request(self.request))1185 def __reduce__(self):1186 return type(self), (self.request,)1187class PeerIdNotSupportedError(BadRequestError):1188 def __init__(self, request):1189 self.request = request1190 super(Exception, self).__init__('The provided peer ID is not supported' + self._fmt_request(self.request))1191 def __reduce__(self):1192 return type(self), (self.request,)1193class PersistentTimestampEmptyError(BadRequestError):1194 def __init__(self, request):1195 self.request = request1196 super(Exception, self).__init__('Persistent timestamp empty' + self._fmt_request(self.request))1197 def __reduce__(self):1198 return type(self), (self.request,)1199class PersistentTimestampInvalidError(BadRequestError):1200 def __init__(self, request):1201 self.request = request1202 super(Exception, self).__init__('Persistent timestamp invalid' + self._fmt_request(self.request))1203 def __reduce__(self):1204 return type(self), (self.request,)1205class PersistentTimestampOutdatedError(ServerError):1206 def __init__(self, request):1207 self.request = request1208 super(Exception, self).__init__('Persistent timestamp outdated' + self._fmt_request(self.request))1209 def __reduce__(self):1210 return type(self), (self.request,)1211class PhoneCodeEmptyError(BadRequestError):1212 def __init__(self, request):1213 self.request = request1214 super(Exception, self).__init__('The phone code is missing' + self._fmt_request(self.request))1215 def __reduce__(self):1216 return type(self), (self.request,)1217class PhoneCodeExpiredError(BadRequestError):1218 def __init__(self, request):1219 self.request = request1220 super(Exception, self).__init__('The confirmation code has expired' + self._fmt_request(self.request))1221 def __reduce__(self):1222 return type(self), (self.request,)1223class PhoneCodeHashEmptyError(BadRequestError):1224 def __init__(self, request):1225 self.request = request1226 super(Exception, self).__init__('The phone code hash is missing' + self._fmt_request(self.request))1227 def __reduce__(self):1228 return type(self), (self.request,)1229class PhoneCodeInvalidError(BadRequestError):1230 def __init__(self, request):1231 self.request = request1232 super(Exception, self).__init__('The phone code entered was invalid' + self._fmt_request(self.request))1233 def __reduce__(self):1234 return type(self), (self.request,)1235class PhoneMigrateError(InvalidDCError):1236 def __init__(self, request, capture=0):1237 self.request = request1238 self.new_dc = int(capture)1239 super(Exception, self).__init__('The phone number a user is trying to use for authorization is associated with DC {new_dc}'.format(new_dc=self.new_dc) + self._fmt_request(self.request))1240 def __reduce__(self):1241 return type(self), (self.request, self.new_dc)1242class PhoneNumberAppSignupForbiddenError(BadRequestError):1243 def __init__(self, request):1244 self.request = request1245 super(Exception, self).__init__('' + self._fmt_request(self.request))1246 def __reduce__(self):1247 return type(self), (self.request,)1248class PhoneNumberBannedError(BadRequestError):1249 def __init__(self, request):1250 self.request = request1251 super(Exception, self).__init__('The used phone number has been banned from Telegram and cannot be used anymore. Maybe check https://www.telegram.org/faq_spam' + self._fmt_request(self.request))1252 def __reduce__(self):1253 return type(self), (self.request,)1254class PhoneNumberFloodError(BadRequestError):1255 def __init__(self, request):1256 self.request = request1257 super(Exception, self).__init__('You asked for the code too many times.' + self._fmt_request(self.request))1258 def __reduce__(self):1259 return type(self), (self.request,)1260class PhoneNumberInvalidError(BadRequestError):1261 def __init__(self, request):1262 self.request = request1263 super(Exception, self).__init__('The phone number is invalid' + self._fmt_request(self.request))1264 def __reduce__(self):1265 return type(self), (self.request,)1266class PhoneNumberOccupiedError(BadRequestError):1267 def __init__(self, request):1268 self.request = request1269 super(Exception, self).__init__('The phone number is already in use' + self._fmt_request(self.request))1270 def __reduce__(self):1271 return type(self), (self.request,)1272class PhoneNumberUnoccupiedError(BadRequestError):1273 def __init__(self, request):1274 self.request = request1275 super(Exception, self).__init__('The phone number is not yet being used' + self._fmt_request(self.request))1276 def __reduce__(self):1277 return type(self), (self.request,)1278class PhonePasswordFloodError(AuthKeyError):1279 def __init__(self, request):1280 self.request = request1281 super(Exception, self).__init__('You have tried logging in too many times' + self._fmt_request(self.request))1282 def __reduce__(self):1283 return type(self), (self.request,)1284class PhonePasswordProtectedError(BadRequestError):1285 def __init__(self, request):1286 self.request = request1287 super(Exception, self).__init__('This phone is password protected' + self._fmt_request(self.request))1288 def __reduce__(self):1289 return type(self), (self.request,)1290class PhotoContentUrlEmptyError(BadRequestError):1291 def __init__(self, request):1292 self.request = request1293 super(Exception, self).__init__('The content from the URL used as a photo appears to be empty or has caused another HTTP error' + self._fmt_request(self.request))1294 def __reduce__(self):1295 return type(self), (self.request,)1296class PhotoCropSizeSmallError(BadRequestError):1297 def __init__(self, request):1298 self.request = request1299 super(Exception, self).__init__('Photo is too small' + self._fmt_request(self.request))1300 def __reduce__(self):1301 return type(self), (self.request,)1302class PhotoExtInvalidError(BadRequestError):1303 def __init__(self, request):1304 self.request = request1305 super(Exception, self).__init__('The extension of the photo is invalid' + self._fmt_request(self.request))1306 def __reduce__(self):1307 return type(self), (self.request,)1308class PhotoInvalidError(BadRequestError):1309 def __init__(self, request):1310 self.request = request1311 super(Exception, self).__init__('Photo invalid' + self._fmt_request(self.request))1312 def __reduce__(self):1313 return type(self), (self.request,)1314class PhotoInvalidDimensionsError(BadRequestError):1315 def __init__(self, request):1316 self.request = request1317 super(Exception, self).__init__('The photo dimensions are invalid (hint: `pip install pillow` for `send_file` to resize images)' + self._fmt_request(self.request))1318 def __reduce__(self):1319 return type(self), (self.request,)1320class PhotoSaveFileInvalidError(BadRequestError):1321 def __init__(self, request):1322 self.request = request1323 super(Exception, self).__init__('The photo you tried to send cannot be saved by Telegram. A reason may be that it exceeds 10MB. Try resizing it locally' + self._fmt_request(self.request))1324 def __reduce__(self):1325 return type(self), (self.request,)1326class PhotoThumbUrlEmptyError(BadRequestError):1327 def __init__(self, request):1328 self.request = request1329 super(Exception, self).__init__('The URL used as a thumbnail appears to be empty or has caused another HTTP error' + self._fmt_request(self.request))1330 def __reduce__(self):1331 return type(self), (self.request,)1332class PinRestrictedError(BadRequestError):1333 def __init__(self, request):1334 self.request = request1335 super(Exception, self).__init__("You can't pin messages in private chats with other people" + self._fmt_request(self.request))1336 def __reduce__(self):1337 return type(self), (self.request,)1338class PollAnswersInvalidError(BadRequestError):1339 def __init__(self, request):1340 self.request = request1341 super(Exception, self).__init__('The poll did not have enough answers or had too many' + self._fmt_request(self.request))1342 def __reduce__(self):1343 return type(self), (self.request,)1344class PollOptionDuplicateError(BadRequestError):1345 def __init__(self, request):1346 self.request = request1347 super(Exception, self).__init__('A duplicate option was sent in the same poll' + self._fmt_request(self.request))1348 def __reduce__(self):1349 return type(self), (self.request,)1350class PollOptionInvalidError(BadRequestError):1351 def __init__(self, request):1352 self.request = request1353 super(Exception, self).__init__('A poll option used invalid data (the data may be too long)' + self._fmt_request(self.request))1354 def __reduce__(self):1355 return type(self), (self.request,)1356class PollQuestionInvalidError(BadRequestError):1357 def __init__(self, request):1358 self.request = request1359 super(Exception, self).__init__('The poll question was either empty or too long' + self._fmt_request(self.request))1360 def __reduce__(self):1361 return type(self), (self.request,)1362class PollUnsupportedError(BadRequestError):1363 def __init__(self, request):1364 self.request = request1365 super(Exception, self).__init__('This layer does not support polls in the issued method' + self._fmt_request(self.request))1366 def __reduce__(self):1367 return type(self), (self.request,)1368class PrivacyKeyInvalidError(BadRequestError):1369 def __init__(self, request):1370 self.request = request1371 super(Exception, self).__init__('The privacy key is invalid' + self._fmt_request(self.request))1372 def __reduce__(self):1373 return type(self), (self.request,)1374class PrivacyTooLongError(BadRequestError):1375 def __init__(self, request):1376 self.request = request1377 super(Exception, self).__init__('Cannot add that many entities in a single request' + self._fmt_request(self.request))1378 def __reduce__(self):1379 return type(self), (self.request,)1380class PtsChangeEmptyError(ServerError):1381 def __init__(self, request):1382 self.request = request1383 super(Exception, self).__init__('No PTS change' + self._fmt_request(self.request))1384 def __reduce__(self):1385 return type(self), (self.request,)1386class QueryIdEmptyError(BadRequestError):1387 def __init__(self, request):1388 self.request = request1389 super(Exception, self).__init__('The query ID is empty' + self._fmt_request(self.request))1390 def __reduce__(self):1391 return type(self), (self.request,)1392class QueryIdInvalidError(BadRequestError):1393 def __init__(self, request):1394 self.request = request1395 super(Exception, self).__init__('The query ID is invalid' + self._fmt_request(self.request))1396 def __reduce__(self):1397 return type(self), (self.request,)1398class QueryTooShortError(BadRequestError):1399 def __init__(self, request):1400 self.request = request1401 super(Exception, self).__init__('The query string is too short' + self._fmt_request(self.request))1402 def __reduce__(self):1403 return type(self), (self.request,)1404class QuizCorrectAnswersEmptyError(BadRequestError):1405 def __init__(self, request):1406 self.request = request1407 super(Exception, self).__init__('A quiz must specify one correct answer' + self._fmt_request(self.request))1408 def __reduce__(self):1409 return type(self), (self.request,)1410class QuizCorrectAnswersTooMuchError(BadRequestError):1411 def __init__(self, request):1412 self.request = request1413 super(Exception, self).__init__('There can only be one correct answer' + self._fmt_request(self.request))1414 def __reduce__(self):1415 return type(self), (self.request,)1416class QuizCorrectAnswerInvalidError(BadRequestError):1417 def __init__(self, request):1418 self.request = request1419 super(Exception, self).__init__('The correct answer is not an existing answer' + self._fmt_request(self.request))1420 def __reduce__(self):1421 return type(self), (self.request,)1422class QuizMultipleInvalidError(BadRequestError):1423 def __init__(self, request):1424 self.request = request1425 super(Exception, self).__init__('A poll cannot be both multiple choice and quiz' + self._fmt_request(self.request))1426 def __reduce__(self):1427 return type(self), (self.request,)1428class RandomIdDuplicateError(ServerError):1429 def __init__(self, request):1430 self.request = request1431 super(Exception, self).__init__('You provided a random ID that was already used' + self._fmt_request(self.request))1432 def __reduce__(self):1433 return type(self), (self.request,)1434class RandomIdInvalidError(BadRequestError):1435 def __init__(self, request):1436 self.request = request1437 super(Exception, self).__init__('A provided random ID is invalid' + self._fmt_request(self.request))1438 def __reduce__(self):1439 return type(self), (self.request,)1440class RandomLengthInvalidError(BadRequestError):1441 def __init__(self, request):1442 self.request = request1443 super(Exception, self).__init__('Random length invalid' + self._fmt_request(self.request))1444 def __reduce__(self):1445 return type(self), (self.request,)1446class RangesInvalidError(BadRequestError):1447 def __init__(self, request):1448 self.request = request1449 super(Exception, self).__init__('Invalid range provided' + self._fmt_request(self.request))1450 def __reduce__(self):1451 return type(self), (self.request,)1452class ReactionEmptyError(BadRequestError):1453 def __init__(self, request):1454 self.request = request1455 super(Exception, self).__init__('No reaction provided' + self._fmt_request(self.request))1456 def __reduce__(self):1457 return type(self), (self.request,)1458class ReactionInvalidError(BadRequestError):1459 def __init__(self, request):1460 self.request = request1461 super(Exception, self).__init__('Invalid reaction provided (only emoji are allowed)' + self._fmt_request(self.request))1462 def __reduce__(self):1463 return type(self), (self.request,)1464class RegIdGenerateFailedError(ServerError):1465 def __init__(self, request):1466 self.request = request1467 super(Exception, self).__init__('Failure while generating registration ID' + self._fmt_request(self.request))1468 def __reduce__(self):1469 return type(self), (self.request,)1470class ReplyMarkupInvalidError(BadRequestError):1471 def __init__(self, request):1472 self.request = request1473 super(Exception, self).__init__('The provided reply markup is invalid' + self._fmt_request(self.request))1474 def __reduce__(self):1475 return type(self), (self.request,)1476class ReplyMarkupTooLongError(BadRequestError):1477 def __init__(self, request):1478 self.request = request1479 super(Exception, self).__init__('The data embedded in the reply markup buttons was too much' + self._fmt_request(self.request))1480 def __reduce__(self):1481 return type(self), (self.request,)1482class ResultIdDuplicateError(BadRequestError):1483 def __init__(self, request):1484 self.request = request1485 super(Exception, self).__init__('Duplicated IDs on the sent results. Make sure to use unique IDs.' + self._fmt_request(self.request))1486 def __reduce__(self):1487 return type(self), (self.request,)1488class ResultTypeInvalidError(BadRequestError):1489 def __init__(self, request):1490 self.request = request1491 super(Exception, self).__init__('Result type invalid' + self._fmt_request(self.request))1492 def __reduce__(self):1493 return type(self), (self.request,)1494class ResultsTooMuchError(BadRequestError):1495 def __init__(self, request):1496 self.request = request1497 super(Exception, self).__init__('You sent too many results. See https://core.telegram.org/bots/api#answerinlinequery for the current limit.' + self._fmt_request(self.request))1498 def __reduce__(self):1499 return type(self), (self.request,)1500class RightForbiddenError(ForbiddenError):1501 def __init__(self, request):1502 self.request = request1503 super(Exception, self).__init__('Either your admin rights do not allow you to do this or you passed the wrong rights combination (some rights only apply to channels and vice versa)' + self._fmt_request(self.request))1504 def __reduce__(self):1505 return type(self), (self.request,)1506class RpcCallFailError(BadRequestError):1507 def __init__(self, request):1508 self.request = request1509 super(Exception, self).__init__('Telegram is having internal issues, please try again later.' + self._fmt_request(self.request))1510 def __reduce__(self):1511 return type(self), (self.request,)1512class RpcMcgetFailError(BadRequestError):1513 def __init__(self, request):1514 self.request = request1515 super(Exception, self).__init__('Telegram is having internal issues, please try again later.' + self._fmt_request(self.request))1516 def __reduce__(self):1517 return type(self), (self.request,)1518class RsaDecryptFailedError(BadRequestError):1519 def __init__(self, request):1520 self.request = request1521 super(Exception, self).__init__('Internal RSA decryption failed' + self._fmt_request(self.request))1522 def __reduce__(self):1523 return type(self), (self.request,)1524class ScheduleBotNotAllowedError(BadRequestError):1525 def __init__(self, request):1526 self.request = request1527 super(Exception, self).__init__('Bots are not allowed to schedule messages' + self._fmt_request(self.request))1528 def __reduce__(self):1529 return type(self), (self.request,)1530class ScheduleDateTooLateError(BadRequestError):1531 def __init__(self, request):1532 self.request = request1533 super(Exception, self).__init__('The date you tried to schedule is too far in the future (last known limit of 1 year and a few hours)' + self._fmt_request(self.request))1534 def __reduce__(self):1535 return type(self), (self.request,)1536class ScheduleStatusPrivateError(BadRequestError):1537 def __init__(self, request):1538 self.request = request1539 super(Exception, self).__init__('You cannot schedule a message until the person comes online if their privacy does not show this information' + self._fmt_request(self.request))1540 def __reduce__(self):1541 return type(self), (self.request,)1542class ScheduleTooMuchError(BadRequestError):1543 def __init__(self, request):1544 self.request = request1545 super(Exception, self).__init__('You cannot schedule more messages in this chat (last known limit of 100 per chat)' + self._fmt_request(self.request))1546 def __reduce__(self):1547 return type(self), (self.request,)1548class SearchQueryEmptyError(BadRequestError):1549 def __init__(self, request):1550 self.request = request1551 super(Exception, self).__init__('The search query is empty' + self._fmt_request(self.request))1552 def __reduce__(self):1553 return type(self), (self.request,)1554class SecondsInvalidError(BadRequestError):1555 def __init__(self, request):1556 self.request = request1557 super(Exception, self).__init__('Slow mode only supports certain values (e.g. 0, 10s, 30s, 1m, 5m, 15m and 1h)' + self._fmt_request(self.request))1558 def __reduce__(self):1559 return type(self), (self.request,)1560class SendMessageMediaInvalidError(BadRequestError):1561 def __init__(self, request):1562 self.request = request1563 super(Exception, self).__init__('The message media was invalid or not specified' + self._fmt_request(self.request))1564 def __reduce__(self):1565 return type(self), (self.request,)1566class SendMessageTypeInvalidError(BadRequestError):1567 def __init__(self, request):1568 self.request = request1569 super(Exception, self).__init__('The message type is invalid' + self._fmt_request(self.request))1570 def __reduce__(self):1571 return type(self), (self.request,)1572class SessionExpiredError(UnauthorizedError):1573 def __init__(self, request):1574 self.request = request1575 super(Exception, self).__init__('The authorization has expired' + self._fmt_request(self.request))1576 def __reduce__(self):1577 return type(self), (self.request,)1578class SessionPasswordNeededError(UnauthorizedError):1579 def __init__(self, request):1580 self.request = request1581 super(Exception, self).__init__('Two-steps verification is enabled and a password is required' + self._fmt_request(self.request))1582 def __reduce__(self):1583 return type(self), (self.request,)1584class SessionRevokedError(UnauthorizedError):1585 def __init__(self, request):1586 self.request = request1587 super(Exception, self).__init__('The authorization has been invalidated, because of the user terminating all sessions' + self._fmt_request(self.request))1588 def __reduce__(self):1589 return type(self), (self.request,)1590class SessionTooFreshError(BadRequestError):1591 def __init__(self, request, capture=0):1592 self.request = request1593 self.seconds = int(capture)1594 super(Exception, self).__init__('The session logged in too recently and {seconds} seconds must pass before calling the method'.format(seconds=self.seconds) + self._fmt_request(self.request))1595 def __reduce__(self):1596 return type(self), (self.request, self.seconds)1597class Sha256HashInvalidError(BadRequestError):1598 def __init__(self, request):1599 self.request = request1600 super(Exception, self).__init__('The provided SHA256 hash is invalid' + self._fmt_request(self.request))1601 def __reduce__(self):1602 return type(self), (self.request,)1603class ShortnameOccupyFailedError(BadRequestError):1604 def __init__(self, request):1605 self.request = request1606 super(Exception, self).__init__('An error occurred when trying to register the short-name used for the sticker pack. Try a different name' + self._fmt_request(self.request))1607 def __reduce__(self):1608 return type(self), (self.request,)1609class SlowModeWaitError(FloodError):1610 def __init__(self, request, capture=0):1611 self.request = request1612 self.seconds = int(capture)1613 super(Exception, self).__init__('A wait of {seconds} seconds is required before sending another message in this chat'.format(seconds=self.seconds) + self._fmt_request(self.request))1614 def __reduce__(self):1615 return type(self), (self.request, self.seconds)1616class StartParamEmptyError(BadRequestError):1617 def __init__(self, request):1618 self.request = request1619 super(Exception, self).__init__('The start parameter is empty' + self._fmt_request(self.request))1620 def __reduce__(self):1621 return type(self), (self.request,)1622class StartParamInvalidError(BadRequestError):1623 def __init__(self, request):1624 self.request = request1625 super(Exception, self).__init__('Start parameter invalid' + self._fmt_request(self.request))1626 def __reduce__(self):1627 return type(self), (self.request,)1628class StatsMigrateError(InvalidDCError):1629 def __init__(self, request, capture=0):1630 self.request = request1631 self.dc = int(capture)1632 super(Exception, self).__init__('The channel statistics must be fetched from DC {dc}'.format(dc=self.dc) + self._fmt_request(self.request))1633 def __reduce__(self):1634 return type(self), (self.request, self.dc)1635class StickersetInvalidError(BadRequestError):1636 def __init__(self, request):1637 self.request = request1638 super(Exception, self).__init__('The provided sticker set is invalid' + self._fmt_request(self.request))1639 def __reduce__(self):1640 return type(self), (self.request,)1641class StickersEmptyError(BadRequestError):1642 def __init__(self, request):1643 self.request = request1644 super(Exception, self).__init__('No sticker provided' + self._fmt_request(self.request))1645 def __reduce__(self):1646 return type(self), (self.request,)1647class StickerEmojiInvalidError(BadRequestError):1648 def __init__(self, request):1649 self.request = request1650 super(Exception, self).__init__('Sticker emoji invalid' + self._fmt_request(self.request))1651 def __reduce__(self):1652 return type(self), (self.request,)1653class StickerFileInvalidError(BadRequestError):1654 def __init__(self, request):1655 self.request = request1656 super(Exception, self).__init__('Sticker file invalid' + self._fmt_request(self.request))1657 def __reduce__(self):1658 return type(self), (self.request,)1659class StickerIdInvalidError(BadRequestError):1660 def __init__(self, request):1661 self.request = request1662 super(Exception, self).__init__('The provided sticker ID is invalid' + self._fmt_request(self.request))1663 def __reduce__(self):1664 return type(self), (self.request,)1665class StickerInvalidError(BadRequestError):1666 def __init__(self, request):1667 self.request = request1668 super(Exception, self).__init__('The provided sticker is invalid' + self._fmt_request(self.request))1669 def __reduce__(self):1670 return type(self), (self.request,)1671class StickerPngDimensionsError(BadRequestError):1672 def __init__(self, request):1673 self.request = request1674 super(Exception, self).__init__('Sticker png dimensions invalid' + self._fmt_request(self.request))1675 def __reduce__(self):1676 return type(self), (self.request,)1677class StickerPngNopngError(BadRequestError):1678 def __init__(self, request):1679 self.request = request1680 super(Exception, self).__init__('Stickers must be a png file but the used image was not a png' + self._fmt_request(self.request))1681 def __reduce__(self):1682 return type(self), (self.request,)1683class StorageCheckFailedError(ServerError):1684 def __init__(self, request):1685 self.request = request1686 super(Exception, self).__init__('Server storage check failed' + self._fmt_request(self.request))1687 def __reduce__(self):1688 return type(self), (self.request,)1689class StoreInvalidScalarTypeError(ServerError):1690 def __init__(self, request):1691 self.request = request1692 super(Exception, self).__init__('' + self._fmt_request(self.request))1693 def __reduce__(self):1694 return type(self), (self.request,)1695class TakeoutInitDelayError(FloodError):1696 def __init__(self, request, capture=0):1697 self.request = request1698 self.seconds = int(capture)1699 super(Exception, self).__init__('A wait of {seconds} seconds is required before being able to initiate the takeout'.format(seconds=self.seconds) + self._fmt_request(self.request))1700 def __reduce__(self):1701 return type(self), (self.request, self.seconds)1702class TakeoutInvalidError(BadRequestError):1703 def __init__(self, request):1704 self.request = request1705 super(Exception, self).__init__('The takeout session has been invalidated by another data export session' + self._fmt_request(self.request))1706 def __reduce__(self):1707 return type(self), (self.request,)1708class TakeoutRequiredError(BadRequestError):1709 def __init__(self, request):1710 self.request = request1711 super(Exception, self).__init__('You must initialize a takeout request first' + self._fmt_request(self.request))1712 def __reduce__(self):1713 return type(self), (self.request,)1714class TempAuthKeyEmptyError(BadRequestError):1715 def __init__(self, request):1716 self.request = request1717 super(Exception, self).__init__('No temporary auth key provided' + self._fmt_request(self.request))1718 def __reduce__(self):1719 return type(self), (self.request,)1720class TimeoutError(TimedOutError):1721 def __init__(self, request):1722 self.request = request1723 super(Exception, self).__init__('A timeout occurred while fetching data from the worker' + self._fmt_request(self.request))1724 def __reduce__(self):1725 return type(self), (self.request,)1726class TmpPasswordDisabledError(BadRequestError):1727 def __init__(self, request):1728 self.request = request1729 super(Exception, self).__init__('The temporary password is disabled' + self._fmt_request(self.request))1730 def __reduce__(self):1731 return type(self), (self.request,)1732class TokenInvalidError(BadRequestError):1733 def __init__(self, request):1734 self.request = request1735 super(Exception, self).__init__('The provided token is invalid' + self._fmt_request(self.request))1736 def __reduce__(self):1737 return type(self), (self.request,)1738class TtlDaysInvalidError(BadRequestError):1739 def __init__(self, request):1740 self.request = request1741 super(Exception, self).__init__('The provided TTL is invalid' + self._fmt_request(self.request))1742 def __reduce__(self):1743 return type(self), (self.request,)1744class TypesEmptyError(BadRequestError):1745 def __init__(self, request):1746 self.request = request1747 super(Exception, self).__init__('The types field is empty' + self._fmt_request(self.request))1748 def __reduce__(self):1749 return type(self), (self.request,)1750class TypeConstructorInvalidError(BadRequestError):1751 def __init__(self, request):1752 self.request = request1753 super(Exception, self).__init__('The type constructor is invalid' + self._fmt_request(self.request))1754 def __reduce__(self):1755 return type(self), (self.request,)1756class UnknownMethodError(ServerError):1757 def __init__(self, request):1758 self.request = request1759 super(Exception, self).__init__('The method you tried to call cannot be called on non-CDN DCs' + self._fmt_request(self.request))1760 def __reduce__(self):1761 return type(self), (self.request,)1762class UntilDateInvalidError(BadRequestError):1763 def __init__(self, request):1764 self.request = request1765 super(Exception, self).__init__('That date cannot be specified in this request (try using None)' + self._fmt_request(self.request))1766 def __reduce__(self):1767 return type(self), (self.request,)1768class UrlInvalidError(BadRequestError):1769 def __init__(self, request):1770 self.request = request1771 super(Exception, self).__init__("The URL used was invalid (e.g. when answering a callback with an URL that's not t.me/yourbot or your game's URL)" + self._fmt_request(self.request))1772 def __reduce__(self):1773 return type(self), (self.request,)1774class UsernameInvalidError(BadRequestError):1775 def __init__(self, request):1776 self.request = request1777 super(Exception, self).__init__('Nobody is using this username, or the username is unacceptable. If the latter, it must match r"[a-zA-Z][\\w\\d]{3,30}[a-zA-Z\\d]"' + self._fmt_request(self.request))1778 def __reduce__(self):1779 return type(self), (self.request,)1780class UsernameNotModifiedError(BadRequestError):1781 def __init__(self, request):1782 self.request = request1783 super(Exception, self).__init__('The username is not different from the current username' + self._fmt_request(self.request))1784 def __reduce__(self):1785 return type(self), (self.request,)1786class UsernameNotOccupiedError(BadRequestError):1787 def __init__(self, request):1788 self.request = request1789 super(Exception, self).__init__('The username is not in use by anyone else yet' + self._fmt_request(self.request))1790 def __reduce__(self):1791 return type(self), (self.request,)1792class UsernameOccupiedError(BadRequestError):1793 def __init__(self, request):1794 self.request = request1795 super(Exception, self).__init__('The username is already taken' + self._fmt_request(self.request))1796 def __reduce__(self):1797 return type(self), (self.request,)1798class UsersTooFewError(BadRequestError):1799 def __init__(self, request):1800 self.request = request1801 super(Exception, self).__init__('Not enough users (to create a chat, for example)' + self._fmt_request(self.request))1802 def __reduce__(self):1803 return type(self), (self.request,)1804class UsersTooMuchError(BadRequestError):1805 def __init__(self, request):1806 self.request = request1807 super(Exception, self).__init__('The maximum number of users has been exceeded (to create a chat, for example)' + self._fmt_request(self.request))1808 def __reduce__(self):1809 return type(self), (self.request,)1810class UserAdminInvalidError(BadRequestError):1811 def __init__(self, request):1812 self.request = request1813 super(Exception, self).__init__("Either you're not an admin or you tried to ban an admin that you didn't promote" + self._fmt_request(self.request))1814 def __reduce__(self):1815 return type(self), (self.request,)1816class UserAlreadyParticipantError(BadRequestError):1817 def __init__(self, request):1818 self.request = request1819 super(Exception, self).__init__('The authenticated user is already a participant of the chat' + self._fmt_request(self.request))1820 def __reduce__(self):1821 return type(self), (self.request,)1822class UserBannedInChannelError(BadRequestError):1823 def __init__(self, request):1824 self.request = request1825 super(Exception, self).__init__("You're banned from sending messages in supergroups/channels" + self._fmt_request(self.request))1826 def __reduce__(self):1827 return type(self), (self.request,)1828class UserBlockedError(BadRequestError):1829 def __init__(self, request):1830 self.request = request1831 super(Exception, self).__init__('User blocked' + self._fmt_request(self.request))1832 def __reduce__(self):1833 return type(self), (self.request,)1834class UserBotError(BadRequestError):1835 def __init__(self, request):1836 self.request = request1837 super(Exception, self).__init__('Bots can only be admins in channels.' + self._fmt_request(self.request))1838 def __reduce__(self):1839 return type(self), (self.request,)1840class UserBotInvalidError(BadRequestError):1841 def __init__(self, request):1842 self.request = request1843 super(Exception, self).__init__('This method can only be called by a bot' + self._fmt_request(self.request))1844 def __reduce__(self):1845 return type(self), (self.request,)1846class UserBotRequiredError(BadRequestError):1847 def __init__(self, request):1848 self.request = request1849 super(Exception, self).__init__('This method can only be called by a bot' + self._fmt_request(self.request))1850 def __reduce__(self):1851 return type(self), (self.request,)1852class UserChannelsTooMuchError(ForbiddenError):1853 def __init__(self, request):1854 self.request = request1855 super(Exception, self).__init__('One of the users you tried to add is already in too many channels/supergroups' + self._fmt_request(self.request))1856 def __reduce__(self):1857 return type(self), (self.request,)1858class UserCreatorError(BadRequestError):1859 def __init__(self, request):1860 self.request = request1861 super(Exception, self).__init__("You can't leave this channel, because you're its creator" + self._fmt_request(self.request))1862 def __reduce__(self):1863 return type(self), (self.request,)1864class UserDeactivatedError(UnauthorizedError):1865 def __init__(self, request):1866 self.request = request1867 super(Exception, self).__init__('The user has been deleted/deactivated' + self._fmt_request(self.request))1868 def __reduce__(self):1869 return type(self), (self.request,)1870class UserDeactivatedBanError(UnauthorizedError):1871 def __init__(self, request):1872 self.request = request1873 super(Exception, self).__init__('The user has been deleted/deactivated' + self._fmt_request(self.request))1874 def __reduce__(self):1875 return type(self), (self.request,)1876class UserIdInvalidError(BadRequestError):1877 def __init__(self, request):1878 self.request = request1879 super(Exception, self).__init__('Invalid object ID for a user. Make sure to pass the right types, for instance making sure that the request is designed for users or otherwise look for a different one more suited' + self._fmt_request(self.request))1880 def __reduce__(self):1881 return type(self), (self.request,)1882class UserInvalidError(BadRequestError):1883 def __init__(self, request):1884 self.request = request1885 super(Exception, self).__init__('The given user was invalid' + self._fmt_request(self.request))1886 def __reduce__(self):1887 return type(self), (self.request,)1888class UserIsBlockedError(BadRequestError):1889 def __init__(self, request):1890 self.request = request1891 super(Exception, self).__init__('User is blocked' + self._fmt_request(self.request))1892 def __reduce__(self):1893 return type(self), (self.request,)1894class UserIsBotError(BadRequestError):1895 def __init__(self, request):1896 self.request = request1897 super(Exception, self).__init__("Bots can't send messages to other bots" + self._fmt_request(self.request))1898 def __reduce__(self):1899 return type(self), (self.request,)1900class UserKickedError(BadRequestError):1901 def __init__(self, request):1902 self.request = request1903 super(Exception, self).__init__('This user was kicked from this supergroup/channel' + self._fmt_request(self.request))1904 def __reduce__(self):1905 return type(self), (self.request,)1906class UserMigrateError(InvalidDCError):1907 def __init__(self, request, capture=0):1908 self.request = request1909 self.new_dc = int(capture)1910 super(Exception, self).__init__('The user whose identity is being used to execute queries is associated with DC {new_dc}'.format(new_dc=self.new_dc) + self._fmt_request(self.request))1911 def __reduce__(self):1912 return type(self), (self.request, self.new_dc)1913class UserNotMutualContactError(BadRequestError):1914 def __init__(self, request):1915 self.request = request1916 super(Exception, self).__init__('The provided user is not a mutual contact' + self._fmt_request(self.request))1917 def __reduce__(self):1918 return type(self), (self.request,)1919class UserNotParticipantError(BadRequestError):1920 def __init__(self, request):1921 self.request = request1922 super(Exception, self).__init__('The target user is not a member of the specified megagroup or channel' + self._fmt_request(self.request))1923 def __reduce__(self):1924 return type(self), (self.request,)1925class UserPrivacyRestrictedError(ForbiddenError):1926 def __init__(self, request):1927 self.request = request1928 super(Exception, self).__init__("The user's privacy settings do not allow you to do this" + self._fmt_request(self.request))1929 def __reduce__(self):1930 return type(self), (self.request,)1931class UserRestrictedError(ForbiddenError):1932 def __init__(self, request):1933 self.request = request1934 super(Exception, self).__init__("You're spamreported, you can't create channels or chats." + self._fmt_request(self.request))1935 def __reduce__(self):1936 return type(self), (self.request,)1937class VideoContentTypeInvalidError(BadRequestError):1938 def __init__(self, request):1939 self.request = request1940 super(Exception, self).__init__('The video content type is not supported with the given parameters (i.e. supports_streaming)' + self._fmt_request(self.request))1941 def __reduce__(self):1942 return type(self), (self.request,)1943class VideoFileInvalidError(BadRequestError):1944 def __init__(self, request):1945 self.request = request1946 super(Exception, self).__init__('The given video cannot be used' + self._fmt_request(self.request))1947 def __reduce__(self):1948 return type(self), (self.request,)1949class WallpaperFileInvalidError(BadRequestError):1950 def __init__(self, request):1951 self.request = request1952 super(Exception, self).__init__('The given file cannot be used as a wallpaper' + self._fmt_request(self.request))1953 def __reduce__(self):1954 return type(self), (self.request,)1955class WallpaperInvalidError(BadRequestError):1956 def __init__(self, request):1957 self.request = request1958 super(Exception, self).__init__('The input wallpaper was not valid' + self._fmt_request(self.request))1959 def __reduce__(self):1960 return type(self), (self.request,)1961class WcConvertUrlInvalidError(BadRequestError):1962 def __init__(self, request):1963 self.request = request1964 super(Exception, self).__init__('WC convert URL invalid' + self._fmt_request(self.request))1965 def __reduce__(self):1966 return type(self), (self.request,)1967class WebdocumentUrlInvalidError(BadRequestError):1968 def __init__(self, request):1969 self.request = request1970 super(Exception, self).__init__('The given URL cannot be used' + self._fmt_request(self.request))1971 def __reduce__(self):1972 return type(self), (self.request,)1973class WebpageCurlFailedError(BadRequestError):1974 def __init__(self, request):1975 self.request = request1976 super(Exception, self).__init__('Failure while fetching the webpage with cURL' + self._fmt_request(self.request))1977 def __reduce__(self):1978 return type(self), (self.request,)1979class WebpageMediaEmptyError(BadRequestError):1980 def __init__(self, request):1981 self.request = request1982 super(Exception, self).__init__('Webpage media empty' + self._fmt_request(self.request))1983 def __reduce__(self):1984 return type(self), (self.request,)1985class WorkerBusyTooLongRetryError(ServerError):1986 def __init__(self, request):1987 self.request = request1988 super(Exception, self).__init__('Telegram workers are too busy to respond immediately' + self._fmt_request(self.request))1989 def __reduce__(self):1990 return type(self), (self.request,)1991class YouBlockedUserError(BadRequestError):1992 def __init__(self, request):1993 self.request = request1994 super(Exception, self).__init__('You blocked this user' + self._fmt_request(self.request))1995 def __reduce__(self):1996 return type(self), (self.request,)1997rpc_errors_dict = {1998 'ABOUT_TOO_LONG': AboutTooLongError,1999 'ACCESS_TOKEN_EXPIRED': AccessTokenExpiredError,2000 'ACCESS_TOKEN_INVALID': AccessTokenInvalidError,2001 'ACTIVE_USER_REQUIRED': ActiveUserRequiredError,2002 'ADMINS_TOO_MUCH': AdminsTooMuchError,2003 'ADMIN_RANK_EMOJI_NOT_ALLOWED': AdminRankEmojiNotAllowedError,2004 'ADMIN_RANK_INVALID': AdminRankInvalidError,2005 'API_ID_INVALID': ApiIdInvalidError,2006 'API_ID_PUBLISHED_FLOOD': ApiIdPublishedFloodError,2007 'ARTICLE_TITLE_EMPTY': ArticleTitleEmptyError,2008 'AUTH_BYTES_INVALID': AuthBytesInvalidError,2009 'AUTH_KEY_DUPLICATED': AuthKeyDuplicatedError,...

Full Screen

Full Screen

rooreduce.py

Source:rooreduce.py Github

copy

Full Screen

1#!/usr/bin/env python2# -*- coding: utf-8 -*-3# =============================================================================4## @file ostap/fitting/rooreduce.py5# Reduction/serialization/deserialization for some Ostap/ROOT classes 6# @author Vanya BELYAEV Ivan.Belyaev@itep.ru7# @date 2011-06-078# =============================================================================9""" Reduction/serialization/deserialization for some Ostap/ROOT classes10- see RooAbsReal11- see RooRealVar12"""13# =============================================================================14__version__ = "$Revision$"15__author__ = "Vanya BELYAEV Ivan.Belyaev@itep.ru"16__date__ = "2011-06-07"17__all__ = (18 ) 19# =============================================================================20from builtins import range21from ostap.core.meta_info import root_info 22from ostap.math.base import doubles23from ostap.core.core import Ostap24from ostap.math.reduce import root_factory25import ostap.fitting.variables26import ostap.fitting.roocollections27import ostap.histos.graph_reduce as GR 28import ROOT, random, array, ctypes, math, itertools 29# =============================================================================30# logging 31# =============================================================================32from ostap.logger.logger import getLogger 33if '__main__' == __name__ : logger = getLogger( 'ostap.fitting.rooreduce' )34else : logger = getLogger( __name__ )35# =============================================================================36logger.debug( 'Some useful decorations for RooFit variables')37# =============================================================================38_new_methods_ = []39# =============================================================================40## Factory for deserialization of generic objects41# @attention it stores the constructor kaprameters as local attributes42def root_store_factory ( klass , *params ) :43 """Factory for deserialization of generic object44 - attention: it stores the constructor kaprameters as local attributes45 """46 ## create the objects 47 obj = root_factory ( klass , *params )48 ## keep argumets with the newly created obnject 49 obj.__store = params ## Attention - keep argumetns with newly crfeated object!50 return obj 51# =============================================================================52## Some native ROOT/RooFit objects 53# =============================================================================54 55# =============================================================================56## Dedicated unpickling factory for RooRealVar57def _rrv_factory ( args , errors , binnings , fixed , *attrs ) :58 """ Dedicated unpickling factory for `ROOT.RooRealVar`59 """60 ## create it61 rrv = ROOT.RooRealVar ( *args )62 ## set errors if needed 63 if errors and 2 == len ( errors ) : rrv.setAsymError ( *errors ) 64 elif errors and 1 == len ( errors ) : rrv.setError ( *errors )65 for b in binnings :66 if b : rrv.setBinning ( b , b.GetName ()) 67 rrv.setConstant ( fixed )68 69 if attrs :70 battrs = attrs[0] 71 for n , a in battrs : rrv.setAttribute ( n , a )72 if 1 < len ( attrs ) :73 sattrs = attrs[1] 74 for n , a in sattrs : rrv.setStringAttribute ( n , a )75 if 2 < len ( attrs ) :76 tattrs = attrs[2] 77 for n , a in tattrs : rrv.setTransientAttribute ( n , a ) 78 79 return rrv80# =============================================================================81## Reducing of <code>RooRealVar</code> for pickling/unpickling 82# @see RooRooRealVar 83def _rrv_reduce ( rrv ) :84 """ Reducing of `ROOT.RooRealVar` for pickling 85 - see ROOT.RooRooRealVar 86 """87 name = rrv.name 88 title = rrv.title89 value = rrv.getVal () 90 has_min = rrv.hasMin ()91 has_max = rrv.hasMax ()92 ## constructor arguments 93 if has_min and has_max :94 args = name , title , value , rrv.getMin () , rrv.getMax () , rrv.getUnit ()95 elif has_min : 96 args = name , title , value , rrv.getMin () , ROOT.RooNumber.infinity () , rrv.getUnit () 97 elif has_max : 98 args = name , title , value , -ROOT.RooNumber.infinity () , rrv.getMax () , rrv.getUnit () 99 else :100 args = name , title , value , rrv.getUnit () 101 ## errors 102 if rrv.hasAsymError () :103 errors = rrv.getAsymErrorLo () , rrv.getAsymErrorHi ()104 elif rrv.hasError () :105 errors = rrv.getError() ,106 else :107 errors = () 108 ## binings 109 110 binnings = tuple ( rrv.getBinning ( n , False ) for n in rrv.getBinningNames () )111 ## attributes:112 113 battrs = tuple ( ( n , rrv.getAttribute ( n ) ) for n in rrv.attributes () ) 114 sattrs = tuple ( ( n , a ) for ( n , a ) in rrv.stringAttributes () ) 115 tattrs = tuple ( ( n , rrv.getTransientAttribute ( n ) ) for n in rrv.transientAttributes () ) 116 ## fixed ? 117 fixed = True if rrv.isConstant() else False 118 if tattrs : 119 content = args , errors , binnings , fixed , battrs , sattrs , tattrs120 elif sattrs :121 content = args , errors , binnings , fixed , battrs , sattrs122 elif battrs : 123 content = args , errors , binnings , fixed , battrs 124 else : 125 content = args , errors , binnings , fixed 126 127 return _rrv_factory , content 128ROOT.RooRealVar.__reduce__ = _rrv_reduce129# =============================================================================130## Reduce <code>RooConstVar</code>131# @see RooConstVar 132def _rconst_reduce ( var ) :133 """ Reduce `ROOT.RooConstVar`134 - see ROOT.RooConstVar135 """136 return root_factory , ( type ( var ) ,137 var.name ,138 var.title ,139 float ( var ) ) 140ROOT.RooConstVar.__reduce__ = _rconst_reduce 141# ==============================================================================142## factory for RooCategory objects143# @see RooCategory144def _rcat_factory_ ( klass , name , title , index , items ) :145 """factory for `ROOT.RooCategory` objects146 - see `ROOT.RooCategory`147 """148 cat = klass ( name , title )149 for label , index in items : cat.defineType ( label , index )150 cat.setIndex ( index ) 151 return cat152# =============================================================================153## reduce RooCategory instance 154# @see RooCategory155def _rcat_reduce_ ( cat ) :156 """reduce RooCategory instance 157 - see `ROOT.RooCategory`158 """159 items = tuple ( (l,i) for (l,i) in cat.items() )160 return _rcat_factory_ , ( type ( cat ) , cat.GetName() , cat.GetTitle() , cat.getIndex() , items ) 161ROOT.RooCategory .__reduce__ = _rcat_reduce_ 162# =============================================================================163## factory for unpickling of <code>RooFormulaVar</code> and164# <code>Ostap::FormulaVar</code>165# @see RooFormualVar 166# @see Ostap::FormualVar 167def _rfv_factory ( klass , args , vars ) :168 """Factory for unpickling of `RooFormulaVar` and `Ostap.FormulaVar`169 - see ROOT.RooFormulaVar 170 - see Ostap.FormualVar 171 """172 lst = ROOT.RooArgList ()173 for v in vars : lst.add ( v ) 174 margs = list ( args )175 margs.append ( lst )176 margs = tuple ( margs ) 177 178 rfv = klass ( *margs )179 180 rfv.__args = args, vars, lst181 return rfv182 183# =============================================================================184## Reduce <code>RooFormulaVar</code> and <code>Ostap::FormulaVar</code> for pickling185# @see RooFormulaVar 186# @see Ostap::FormulaVar 187def _rfv_reduce ( rfv ) : 188 """Reduce `RooFormulaVar` and `Ostap::FormulaVar` for pickling189 - see RooFormulaVar 190 - see Ostap.FormulaVar 191 """192 name = rfv.GetName ()193 title = rfv.GetTitle ()194 195 rform = rfv.formula () 196 expression = rform.GetTitle () 197 vars = tuple ( d for d in rform.actualDependents() ) 198 args = name , title , expression199 200 return _rfv_factory , ( type ( rfv ) , args , vars ) 201if (6,22) <= root_info : ROOT.RooFormulaVar.__reduce__ = _rfv_reduce202else : Ostap.FormulaVar.__reduce__ = _rfv_reduce203# =============================================================================204## unpickle RooUniformBinning object205# @see RooUniformBinnig 206def _rub_factory ( *args ) :207 """unpickle RooUniformBinning object208 -see ROOT.RooUniformBinnig209 """210 return ROOT.RooUniformBinning ( *args )211# =============================================================================212## reduce uniform binning scheme213# @see RoUniformBinnig 214def _rub_reduce_ ( rub ) :215 """Reduce RooUniformBininkg Object216 - see ROOT.RooUniformBinning217 """218 nbins = rub.numBoundaries()219 if nbins : nbins -= 1220 content = rub.lowBound () , rub.highBound(), nbins , rub.GetName()221 222 return _rub_factory, content223# =============================================================================224## unpickle RooBinning object225# @see RooBinnig 226def _rb_factory ( data , name ) :227 """unpickle RooBinning object228 -see ROOT.RooUniformBinnig229 """230 return ROOT.RooBinning ( len ( data ) - 1 , data [ 0 ] , name )231# =============================================================================232## reduce RooBinning object233# @see RooBinning 234def _rb_reduce_ ( rb ) :235 """Reduce RooBinning object236 - see ROOT.RooBinning 237 """238 if rb.isUniform() : return _rub_reduce_ ( rb )239 nb = rb.numBoundaries() 240 ab = rb.array ()241 data = array.array ( 'd' , [ 1.0 * ab[i] for i in range ( nb ) ] )242 content = data, rb.GetName() 243 return _rb_factory, content244# ==========================================================================245## unpickle RooRangeBinning object246# @see RooRangeBinnig 247def _rrb_factory ( low , high , name ) :248 """unpickle RooRangeBinning object"""249 return ROOT.RooRangeBinning( low , high , name )250# ============================================================================251## reduce RooRangeBinnig object252# @see RooRangeBinnig 253def _rrb_reduce_ ( rrb ) :254 """Reduce RooRangeBinnig object"""255 return _rrb_factory , ( rrb.lowBound() , rrb.highBound() , rrb.GetName() ) 256ROOT.RooBinning .__reduce__ = _rb_reduce_257ROOT.RooUniformBinning.__reduce__ = _rub_reduce_258ROOT.RooRangeBinning .__reduce__ = _rrb_reduce_259 260if not hasattr ( ROOT.RooGaussian , 'getX' ) :261 def _rgau_x_ ( pdf ) :262 """Get x-observable"""263 return Ostap.MoreRooFit.getX ( pdf )264 ROOT.RooGaussian.getX = _rgau_x_265 _new_methods_ += [ ROOT.RooGaussian.getX ]266if not hasattr ( ROOT.RooGaussian , 'getMean' ) :267 def _rgau_mean_ ( pdf ) :268 """Get x-observable"""269 return Ostap.MoreRooFit.getMean ( pdf )270 ROOT.RooGaussian.getMean = _rgau_mean_271 _new_methods_ += [ ROOT.RooGaussian.getMean ]272if not hasattr ( ROOT.RooGaussian , 'getSigma' ) :273 def _rgau_sigma_ ( pdf ) :274 """Get sigma"""275 return Ostap.MoreRooFit.getSigma ( pdf )276 ROOT.RooGaussian.getSigma = _rgau_sigma_277 _new_methods_ += [ ROOT.RooGaussian.getSigma ]278# ==========================================================================--279## reduce RooGaussian object 280def _rgau_reduce_ ( pdf ) :281 """Reduce `RooGaussian` object"""282 return root_store_factory , ( type ( pdf ) ,283 pdf.name ,284 pdf.title ,285 pdf.getX () ,286 pdf.getMean () , 287 pdf.getSigma () )288ROOT.RooGaussian.__reduce__ = _rgau_reduce_ 289if not hasattr ( ROOT.RooMultiVarGaussian , 'observables' ) :290 def _rmvgau_observables_ ( pdf ) :291 """Get observables"""292 return Ostap.MoreRooFit.observables( pdf )293 ROOT.RooMultiVarGaussian.observables = _rmvgau_observables_294 _new_methods_ += [ ROOT.RooMultiVarGaussian.observables ]295if not hasattr ( ROOT.RooMultiVarGaussian , 'mu_vec' ) :296 def _rmvgau_mu_vec_ ( pdf ) :297 """Get mu-vec"""298 return Ostap.MoreRooFit.mu_vec ( pdf )299 ROOT.RooMultiVarGaussian.mu_vec = _rmvgau_mu_vec_300 _new_methods_ += [ ROOT.RooMultiVarGaussian.mu_vec ]301# ================================================================================302## deserialize RooMultiVarGaussian object303# @see RooMultiVarGaussian304def _rmvgau_factory_ ( klass , *args ) :305 """Deserialize `ROOT.RooMultiVarGaussian` 306 - see `ROOT.RooMultiVarGaussian`307 """308 if 5 != len ( args ) : raise pickle.UnpicklingError("RooMultiVarGaussian: ivalid record length!")309 muvec = args [3]310 covm = args [4]311 N = len ( muvec )312 if N * N != len ( covm ) : raise pickle.UnpicklingError("RooMultiVarGaussian: cannot reconstruct covmatrix")313 314 muvec = ROOT.TVectorD ( N , muvec )315 covm = ROOT.TMatrixDSym ( N , covm )316 317 newargs = args [:3] + ( muvec, covm ) 318 return root_store_factory ( klass , *newargs ) 319 320# ==========================================================================--321## reduce RooMultiVarGaussian object 322def _rmvgau_reduce_ ( pdf ) :323 """Reduce `RooMultiVarGaussian` object"""324 return _rmvgau_factory_ , ( type ( pdf ) ,325 pdf.name ,326 pdf.title ,327 pdf.observables () ,328 array.array ( 'd' , pdf.mu_vec () ) , 329 array.array ( 'd' , pdf.covarianceMatrix () ) )330ROOT.RooMultiVarGaussian.__reduce__ = _rmvgau_reduce_ 331# ==========================================================================--332## Get the original fractions from the <code>RooAddPdf</code>333# @code334# addpdf = ...335# fractions , recursive = addpdf.orig_fracs() 336# @endcode 337# @see RooAddPdf 338def _raddpdf_fractions ( radd ) :339 """ Get the original fractions from the <code>RooAddPdf</code>340 >>> addpdf = ...341 >>> fractions , recursive = addpdf.orig_fracs() 342 """343 rec = ctypes.c_bool ()344 fracs = Ostap.MoreRooFit.fractions ( radd , rec )345 return fracs, rec.value346 347# ==========================================================================--348ROOT.RooAddPdf .orig_fracs = _raddpdf_fractions349_new_methods_ += [ ROOT.RooAddPdf .orig_fracs ] 350# ==========================================================================--351## reduce RooAddPdf object 352def _raddpdf_reduce_ ( pdf ) :353 """Reduce `RooAddPdf` object"""354 content = type ( pdf ) , pdf.name , pdf.title , pdf.pdfList()355 pars = pdf.coefList ()356 if 1 <= len ( pars ) :357 content = content + pdf.orig_fracs () 358 return root_store_factory , content359ROOT.RooAddPdf.__reduce__ = _raddpdf_reduce_ 360# =============================================================================361## Is this <code>RooProdPdf</code> object conditional ?362# @see RooProdPdf 363def _rprodpdf_cond_ ( pdf ) :364 """Is this `RooProdPdf` object conditional ?365 - see `ROOT.RooProdPdf` 366 """367 for p in pdf.pdfList() :368 vset = pdf.findPdfNSet ( p )369 if not set : continue370 elif 1 <= len ( vset ) : return True 371 return False372ROOT.RooProdPdf.conditional = _rprodpdf_cond_ 373_new_methods_ += [ ROOT.RooProdPdf.conditional ]374# =============================================================================375## reduce RooProdPdf 376# @see RooProdPdf377def _rprodpdf_reduce_ ( pdf ) :378 """Reduce `ROOT.RooProdPdf`379 - see `ROOT.RooProdPdf`380 """381 if pdf.conditional () :382 import pickle383 raise pickle.PicklingError("RooProdPdf is conditional (cannot be picked)")384 385 content = type ( pdf ) , pdf.name , pdf.title , pdf.pdfList()386 return root_store_factory , content387ROOT.RooProdPdf.__reduce__ = _rprodpdf_reduce_ 388# =============================================================================389## Factory for RooFFTConfPdf 390# @see RooFFTConfPdf 391def _rfft_factory_ ( klass , args , params ) :392 """Factory for `ROOT.RooFFTConvPdf` 393 - see `ROOT.RooFFTConvPdf`394 """395 pdf = klass ( *args )396 pdf.__args = args 397 bs , bf , s1 , s2 = params398 pdf.setBufferStrategy ( bs )399 pdf.setBufferFraction ( bf )400 pdf.setShift ( s1 , s2 ) 401 return pdf402# =============================================================================403## reduce RooFFTConvPdf404# @see RooFFTConvPdf 405def _rfft_reduce_ ( pdf ) :406 s1 = ctypes.c_double ( 0 )407 s2 = ctypes.c_double ( 0 )408 pars = Ostap.MoreRooFit.fft_pars ( pdf , s1 , s2 )409 args = ( pdf.name , pdf.title ) + \410 tuple ( p for p in pars ) + \411 ( pdf.getInterpolationOrder() , ) 412 413 params = pdf.bufferStrategy() , pdf.bufferFraction() , s1.value , s2.value414 return _rfft_factory_ , ( type ( pdf ) , args , params )415 416ROOT.RooFFTConvPdf.__reduce__ = _rfft_reduce_ 417# =============================================================================418## Factory for RooSimultaneous419# @see RooSimultaneous 420def _rsim_factory_ ( klass , args , catlst ) :421 """Factory for `ROOT.RooSimultaneous` 422 - see `ROOT.Simultaneous`423 """424 pdf = klass ( *args )425 for l , p in catlst : pdf.addPdf ( p , l )426 pdf.__catlst = catlst 427 return pdf428# ================================================================================429## Reduce RooSimultaneous object430# @see RooSimultaneous 431def _rsim_reduce_ ( pdf ) :432 """Reduce RooSimultaneous object433 -see RooSimultaneous 434 """435 cat = pdf.indexCat()436 labels = cat.labels()437 catlst = tuple ( ( l , pdf.getPdf(l) ) for l in labels )438 args = pdf.name , pdf.title , cat 439 return _rsim_factory_ , ( type ( pdf ) , args , catlst ) 440ROOT.RooSimultaneous.__reduce__ = _rsim_reduce_ 441# =============================================================================442## access to underlying efficiency function from RooEfficiency443# @see RooEfficiency 444# @see Ostap::MorERooFit::get_eff 445def _reff_efficiency_ ( pdf ) :446 """Access to underlying efficiency function from RooEfficiency447 - see `ROOT.RooEfficiency`448 - see `Ostap.MoreRooFit.get_eff`449 """450 return Ostap.MoreRooFit.get_eff ( pdf )451# =============================================================================452## access to underlying accept/reject category from RooEfficiency453# @see RooEfficiency 454# @see Ostap::MorERooFit::get_cat 455def _reff_category_ ( pdf ) :456 """Access to underlying accept/reject category from RooEfficiency457 - see `ROOT.RooEfficiency`458 - see `Ostap.MoreRooFit.get_cat`459 """460 return Ostap.MoreRooFit.get_cat ( pdf )461# =============================================================================462## access to accept category from RooEfficiency463# @see RooEfficiency 464# @see Ostap::MorERooFit::get_acc465def _reff_accept_ ( pdf ) :466 """Access to accept category from RooEfficiency467 - see `ROOT.RooEfficiency`468 - see `Ostap.MoreRooFit.get_acc`469 """470 return Ostap.MoreRooFit.get_acc ( pdf )471ROOT.RooEfficiency. efficiency = _reff_efficiency_472ROOT.RooEfficiency. category = _reff_category_473ROOT.RooEfficiency. accept = _reff_accept_474_new_methods_ += [475 ROOT.RooEfficiency. efficiency , 476 ROOT.RooEfficiency. category , 477 ROOT.RooEfficiency. accept , 478 ]479# =============================================================================480## reduce RooEfficiency481# @see RooEfficiency482def _reff_reduce_ ( pdf ) :483 """Reduce `ROOT.RooEfficiency`484 - see `ROOT.RooEfficiency`485 """486 return root_store_factory , ( type ( pdf ) ,487 pdf.name ,488 pdf.title ,489 pdf.efficiency() , 490 pdf.category () , 491 pdf.accept () )492ROOT.RooEfficiency.__reduce__ = _reff_reduce_ 493# ================================================================================494## get the list of coefficients from <code>RooPolyVar</code>495# @see RooPolyVar496def _rpv_coefficients_ ( var ) :497 """Get the list of coefficients from `ROOT.RooPolyVar`498 -see `ROOT.RooPolyVar`499 """500 return Ostap.MoreRooFit.coefficients ( var ) 501ROOT.RooPolyVar . coefficients = _rpv_coefficients_502ROOT.RooPolynomial. coefficients = _rpv_coefficients_503_new_methods_ += [504 ROOT.RooPolyVar . coefficients ,505 ROOT.RooPolynomial. coefficients ,506 ]507# =============================================================================508## reduce RooPolyVar509# @see RooPolyVar510def _rpv_reduce_ ( var ) :511 """Reduce `ROOT.RooPolyVar`512 - see `ROOT.RooPolyVar`513 """514 return root_store_factory , ( type ( pdf ) ,515 pdf.name ,516 pdf.title ,517 pdf.coefficients () )518ROOT.RooPolyVar . __reduce__ = _rpv_reduce_519ROOT.RooPolynomial. __reduce__ = _rpv_reduce_520# ================================================================================521## deserialize RooFitResult522# @see RooFitResult523# @see Ostap::Utils::FitResults524def _rrfr_factory_ ( klass , *args ) :525 """Deserialize RooFitResult526 - see `ROOT.RooFitResult`527 - see `Ostap.Utils.FitResults`528 """529 ## create530 newargs = args [ : 10 ] 531 covargs = args [ 10 ] ## covariance related arguments 532 history = args [ 11 ] ## the last argument, history 533 import pickle534 if 3 == len ( covargs ) :535 536 gcc , corm , covm = covargs 537 D = len ( gcc )538 539 if D * D != len ( corm ) : raise pickle.UnpicklingError("FitResult(1): cannot reconstruct cormatrix")540 if D * D != len ( covm ) : raise pickle.UnpicklingError("FitResult(1): cannot reconstruct covmatrix")541 gcc = doubles ( gcc ) 542 corm = ROOT.TMatrixDSym ( D , corm )543 covm = ROOT.TMatrixDSym ( D , covm )544 545 newargs += gcc , corm , covm546 547 else :548 549 covm = covargs 550 551 l2 = len ( covm )552 D = int ( math.sqrt ( l2 ) ) 553 if D * D != l2 :554 raise pickle.UnpicklingError("FitResult(2): cannot reconstruct covmatrix")555 covm = ROOT.TMatrixDSym ( D , covm )556 newargs += covm ,557 558 tmpres = klass ( *newargs )559 560 for label , code in history : tmpres.add_to_history ( label , code )561 562 result = ROOT.RooFitResult ( tmpres )563 result.__args = args564 565 return result 566 567# ================================================================================568## Reduce RooFitResult569# @see RooFitResult570def _rrfr_reduce_ ( res ) :571 """ Reduce `RooFitResult`572 - see `ROOT.RooFitResult`573 """574 nr = Ostap.Utils.FitResults ( res )575 content = type ( nr ) , res.name , res.title , \576 res.constPars () , res.floatParsInit() , res.floatParsFinal() , \577 nr.status () , nr.covQual() , nr.minNll() , \578 nr.edm () , nr.numInvalidNLL ()579 gcc = nr.global_cc()580 N = len ( gcc )581 covm = res.covarianceMatrix ()582 corm = res.correlationMatrix ()583 if gcc and 1 <= N and covm.IsValid() and corm.IsValid() and N == covm.GetNrows() and N == corm.GetNrows() : 584 covargs = ( array.array ( 'd' , gcc ) ,585 array.array ( 'd' , corm ) ,586 array.array ( 'd' , covm ) )587 else :588 covargs = array.array ( 'd' , covm ) 589 590 history = tuple ( ( nr.statusLabelHistory(i) ,nr.statusCodeHistory(i) ) \591 for i in range ( nr.numStatusHistory () ) )592 593 content += covargs , history 594 595 return _rrfr_factory_ , content 596ROOT.RooFitResult.__reduce__ = _rrfr_reduce_ 597# =============================================================================598## reconstruct/deserialize <code>RooPlot</code> object599def _rplot_factory_ ( klass , xmin , xmax , ymin , ymax , items ) :600 """Reconstruct/deserialize `ROOT.RooPlot` object601 """602 plot = klass ( xmin , xmax , ymin , ymax )603 ##604 for ( obj , options , invisible ) in items :605 if isinstance ( obj , ROOT.RooPlotable ) : 606 plot.addPlotable ( obj , options , invisible )607 elif isinstance ( obj , ROOT.TH1 ) and 1 == obj.GetDimension() :608 plot.addTH1 ( obj , options , invisible )609 else :610 plot.addObject ( obj , options , invisible ) 611 ## 612 plot.__store = items ## ATTENTION!! keep the items! 613 return plot 614 615# =============================================================================616## reduce RooPlot object617def _rplot_reduce_ ( plot ) :618 """Reduce `ROOT.RooPlot` object"""619 return _rplot_factory_ , ( type ( plot ) ,620 plot.GetXaxis().GetXmin() ,621 plot.GetXaxis().GetXmax() ,622 plot.GetMinimum () ,623 plot.GetMaximum () ,624 tuple ( i for i in plot.items() ) )625ROOT.RooPlot.__reduce__ = _rplot_reduce_ 626# ===============================================================================627## reconstruct/deserialize/unpickle <code>TGraph</code> object628# @see RooCurve629# @see RooPlotable630# @see TGraph631def _rcurv_factory_ ( klass , *args ) : 632 """Reconstruct/deserialize/unpickle `ROOT.RooCurve` object633 -see `ROOT.RooCurve`634 -see `ROOT.RooPlotable`635 -see `ROOT.TGraph`636 """637 graph = GR.graph_factory ( klass , *args [:-1] )638 ## 639 rplotatts = args[-1]640 graph.setYAxisLabel ( rplotatts [0 ] )641 graph.setYAxisLimits ( *rplotatts [1:] )642 ## 643 return graph 644# =============================================================================645## Reduce/serialize/pickle simple <code>TGraph</code> object646# @see ROOT.TGraph647def _rcurv_reduce_ ( graph ) :648 """Reduce/serialize/pickle simple `ROOT.RooCurve` object\649 - see `ROOT.RooCurve`650 - see `ROOT.RooEllipse`651 - see `ROOT.RooPlotable`652 - see `ROOT.TGraph`653 """654 _ , content = GR.graph_reduce ( graph )655 rplotatts = graph.getYAxisLabel () , graph.getYAxisMin (), graph.getYAxisMax ()656 return _rcurv_factory_ , content + ( rplotatts , ) 657ROOT.RooCurve .__reduce__ = _rcurv_reduce_658ROOT.RooEllipse.__reduce__ = _rcurv_reduce_659# ===============================================================================660## reconstruct/deserialize/unpickle <code>RooHist</code> object661# @see RooHist662# @see RooPlotable663# @see TGraphAsymmErrors664def _rhist_factory_ ( klass , *args ) :665 """Reconstruct/deserialize/unpickle `ROOT.RooHist` object666 -see `ROOT.RooHist`667 -see `ROOT.RooPlotable`668 -see `ROOT.TGraphAsymmErrors`669 """670 graph = GR.graph_asymerrors_factory ( klass , *args [:-1] )671 rplotatts = args[-1]672 graph.setYAxisLabel ( rplotatts [0 ] )673 graph.setYAxisLimits ( *rplotatts [1:] )674 ## 675 return graph 676# =============================================================================677## Reduce/serialize/pickle simple <code>RooHist</code> object678# @see ROOT.RooHist679# @see ROOT.TGraphAsymmErorrs680def _rhist_reduce_ ( graph ) :681 """Reduce/serialize/pickle simple `ROOT.RooHist` object682 - see `ROOT.RooHist`683 - see `ROOT.TGraphAsymmErrors`684 """685 _ , content = GR.graph_asymerrors_reduce ( graph )686 rplotatts = graph.getYAxisLabel (), graph.getYAxisMin (), graph.getYAxisMax () 687 return _rhist_factory_ , content + ( rplotatts , ) 688ROOT.RooHist.__reduce__ = _rhist_reduce_689# =============================================================================690## Reduce <code>Ostap::MoreRooFit::TwoVars</code> objects691# @see Ostap::MoreRooFit.TwoVars692def _r2v_reduce ( var ) :693 """Reduce `Ostap::MoreRooFit::TwoVars` objects694 - see Ostap.MoreRooFit.TwoVars695 """696 return root_store_factory , ( type ( var ) , var.name , var.title , var.x() , var.y() )697Ostap.MoreRooFit.TwoVars.__reduce__ = _r2v_reduce698# ===================================================================699## Reduce <code>Ostap::MoreRooFit::Addition</code> objects700# @see Ostap::MoreRooFit.Addition701def _radd1_reduce ( var ) :702 """Reduce `Ostap.MoreRooFit.Addition` objects703 - see Ostap.MoreRooFit.Addition704 """705 content = type ( var ) , var.name , var.title , var.x () , var.y ()706 return root_store_factory , content 707# ===================================================================708## Reduce <code>Ostap::MoreRooFit::Addition3</code> objects709# @see Ostap::MoreRooFit.Addition3710def _radd2_reduce ( var ) :711 """Reduce `Ostap.MoreRooFit.Addition` objects712 - see Ostap.MoreRooFit.Addition2713 """714 content = type ( var ) , var.name , var.title , var.x () , var.y () , var.c1 () , var.c2 () 715 return root_store_factory , content716# =============================================================================717## reduce <code>Ostap::MoreRooFit::Id<code> object718# @see Ostap.MoreRooFit::Id719def _rid_reduce ( var ) :720 """Reduce `Ostap.MoreRooFit.Id` object721 - see Ostap.MoreRooFit.Id722 """723 return root_store_factory , ( type ( var ) ,724 var.name ,725 var.title ,726 var.x () )727# =============================================================================728## reduce <code>Ostap::MoreRooFit::AddDeps<code> object729# @see Ostap.MoreRooFit::AddDeps730def _radddep_reduce ( var ) :731 """Reduce `Ostap.MoreRooFit.AddDeps` object732 - see Ostap.MoreRooFit.AddDeps733 """734 return root_store_factory , ( type ( var ) ,735 var.name ,736 var.title ,737 var.x () ,738 var.vlst() )739Ostap.MoreRooFit.Addition .__reduce__ = _radd1_reduce740Ostap.MoreRooFit.Addition2 .__reduce__ = _radd2_reduce741Ostap.MoreRooFit.Subtraction .__reduce__ = _r2v_reduce742Ostap.MoreRooFit.Product .__reduce__ = _r2v_reduce743Ostap.MoreRooFit.ProductPdf .__reduce__ = _r2v_reduce744Ostap.MoreRooFit.Id .__reduce__ = _rid_reduce745Ostap.MoreRooFit.AddDeps .__reduce__ = _radddep_reduce746# ===================================================================747## Reduce <code>Ostap::MoreRooFit::Combination</code> objects748# @see Ostap::MoreRooFit.Combination749def _rcomb_reduce ( var ) :750 """Reduce `Ostap.MoreRooFit.Combination` objects751 - see Ostap.MoreRooFit.Combination752 """753 return root_store_factory , ( type ( var ) ,754 var.name ,755 var.title ,756 var.x() ,757 var.y() ,758 var.alpha () ,759 var.beta () ,760 var.gamma () )761Ostap.MoreRooFit.Combination.__reduce__ = _rcomb_reduce762# ===================================================================763## Reduce <code>Ostap::MoreRooFit::Asymmetry</code> objects764# @see Ostap::MoreRooFit.Asymmetry765def _rasym_reduce ( var ) :766 """Reduce `Ostap::MoreRooFit::Asymmetry` objects767 - see Ostap.MoreRooFit.Asymmetry768 """769 return root_store_factory , ( type ( var ) ,770 var.name , var.title ,771 var.x() , var.y() ,772 var.scale () )773Ostap.MoreRooFit.Asymmetry. __reduce__ = _rasym_reduce774# =============================================================================775## Reduce <code>Ostap::MoreRooFit::Constant</code>776def _rconst2_reduce ( var ) :777 """ Reduce `ROOT.RooConstVar`778 """779 return root_store_factory , ( type ( var ) ,780 var.name ,781 var.title ,782 float ( var ) ,783 var.vlst() )784Ostap.MoreRooFit.Constant. __reduce__ = _rconst2_reduce785# =============================================================================786## Reduce <code>Ostap::MoreRooFit::Bernstein</code> object 787# @see Ostap::MoreRooDit::Bernstein788def _rbern_reduce ( var ) :789 """Reduce `Ostap.MoreRooFit.Bernstein` object 790 - see Ostap.MoreRooDit.Bernstein791 """792 return root_store_factory , ( type ( var ) ,793 var.name ,794 var.title ,795 var.xvar () ,796 var.pars () , 797 var.xmin () ,798 var.xmax () )799Ostap.MoreRooFit.Bernstein. __reduce__ = _rbern_reduce800# =============================================================================801## Reduce <code>Ostap::MoreRooFit::Monotonic</code> object 802# @see Ostap::MoreRooDit::Monotonic803def _rmono_reduce ( var ) :804 """Reduce `Ostap.MoreRooFit.Monotonic` object 805 - see Ostap.MoreRooDit.Monotonic806 """807 return root_store_factory , ( type ( var ) ,808 var.name ,809 var.title ,810 var.xvar () ,811 var.pars () , 812 var.monotonic().increasing() , 813 var.xmin () ,814 var.xmax () ,815 var.a () ,816 var.b () )817Ostap.MoreRooFit.Monotonic. __reduce__ = _rmono_reduce818# =============================================================================819## Reduce <code>Ostap::MoreRooFit::Convex</code> object 820# @see Ostap::MoreRooDit::Monotonic821def _rconv1_reduce ( var ) :822 """Reduce `Ostap.MoreRooFit.Monotonic` object 823 - see Ostap.MoreRooDit.Monotonic824 """825 return root_store_factory , ( type ( var ) ,826 var.name ,827 var.title ,828 var.xvar () ,829 var.pars () , 830 var.convex ().increasing () , 831 var.convex ().convex () , 832 var.xmin () ,833 var.xmax () ,834 var.a () ,835 var.b () )836Ostap.MoreRooFit.Convex. __reduce__ = _rconv1_reduce837# =============================================================================838## Reduce <code>Ostap::MoreRooFit::ConvexOnly</code> object 839# @see Ostap::MoreRooDit::ConvexOnly840def _rconv2_reduce ( var ) :841 """Reduce `Ostap.MoreRooFit.ConvexOnly` object 842 - see Ostap.MoreRooDit.ConvexOnly843 """844 return root_store_factory , ( type ( var ) ,845 var.name ,846 var.title ,847 var.xvar () ,848 var.pars () , 849 var.convex ().convex () , 850 var.xmin () ,851 var.xmax () ,852 var.a () ,853 var.b () )854Ostap.MoreRooFit.ConvexOnly. __reduce__ = _rconv2_reduce855# =============================================================================856## unpickle <code>Ostap::MoreRooFit::BSpline</code> objects857# @see Ostap::MoreRooFit::BSpline858def _rbspl_factory ( klass , name , title , xvar , knots , pars ) :859 """unpickle `Ostap.MoreRooFit.BSpline` objects860 - see Ostap.MoreRooFit.BSpline861 """862 plst = ROOT.RooArgList()863 for v in pars : plst.add ( v )864 knots = doubles ( knots )865 #866 obj = klass ( name , title , xvar , knots , pars )867 obj.__args = pars ## ATTENTION HERE! keep the args! 868 return obj 869# =============================================================================870## Reduce <code>Ostap::MoreRooFit::BSpline</code> object 871# @see Ostap::MoreRooDit::BSpline872def _rbspl_reduce ( spl ) :873 """Reduce `Ostap.MoreRooFit.BSpline` object 874 - see Ostap.MoreRooDit.BSpline875 """876 return _rbspl_factory, ( type ( spl ) ,877 spl.name ,878 spl.title ,879 spl.xvar () ,880 array.array( 'd' , spl.knots() ) ,881 spl.pars() )882Ostap.MoreRooFit.BSpline. __reduce__ = _rbspl_reduce883# ============================884## reduce <code>Ostap::Models::Uniform<code> object885# @see Ostap::Models.Uniform 886def _runi_reduce_ ( uni ) :887 """reduce <code>Ostap::Models::Uniform<code> object888 - see Ostap::Models.Uniform 889 """890 tail = ()891 ##892 d = uni.dim() 893 if 1 == d : tail = uni.x() ,894 elif 2 == d : tail = uni.x() , uni.y()895 elif 3 == d : tail = uni.x() , uni.y() , uni.z()896 ##897 return root_store_factory , ( type ( uni ) ,898 uni.name ,899 uni.title ) + tail900Ostap.Models.Uniform.__reduce__ = _runi_reduce_901# =============================================================================902## reduce BreitWigner903def _rbw_reduce_ ( pdf ):904 """Reduce BreitWigner"""905 return root_store_factory , ( type ( pdf ) ,906 pdf.name ,907 pdf.title ,908 pdf.x () , 909 pdf.mass () ,910 pdf.widths ()[0] ,911 pdf.breit_wigner() ) 912Ostap.Models.BreitWigner.__reduce__ = _rbw_reduce_ 913# =============================================================================914## reduce BreitWignerMC915def _rbwmc_reduce_ ( pdf ):916 """Reduce BreitWignerMC"""917 return root_store_factory , ( type ( pdf ) ,918 pdf.name ,919 pdf.title ,920 pdf.x () , 921 pdf.mass () ,922 pdf.widths () ,923 pdf.breit_wigner_MC() ) 924Ostap.Models.BreitWignerMC.__reduce__ = _rbwmc_reduce_ 925# =============================================================================926## reduce BWI927def _rbwi_reduce_ ( pdf ):928 """Reduce BWI"""929 return root_store_factory , ( type ( pdf ) ,930 pdf.name ,931 pdf.title ,932 pdf.original () ,933 pdf.magnitude () ,934 pdf.phase () ,935 pdf.scale1 () ,936 pdf.scale2 () )937Ostap.Models.BWI.__reduce__ = _rbwi_reduce_ 938# =============================================================================939## reduce Flatte940def _rflatte_reduce_ ( pdf ):941 """Reduce Flatte"""942 return root_store_factory , ( type ( pdf ) ,943 pdf.name ,944 pdf.title ,945 pdf.x () , 946 pdf.mass () ,947 pdf.widths ()[0] ,948 pdf.widths ()[1] ,949 pdf.widths ()[2] ,950 pdf.flatte () ) 951Ostap.Models.Flatte.__reduce__ = _rflatte_reduce_ 952# =============================================================================953## reduce FlatteBugg954def _rflattebugg_reduce_ ( pdf ):955 """Reduce FlatteBugg"""956 return root_store_factory , ( type ( pdf ) ,957 pdf.name ,958 pdf.title ,959 pdf.x () , 960 pdf.mass () ,961 pdf.widths ()[0] ,962 pdf.widths ()[1] ,963 pdf.widths ()[2] ,964 pdf.flatte_bugg () ) 965Ostap.Models.FlatteBugg.__reduce__ = _rflattebugg_reduce_ 966# =============================================================================967## reduce LASS968def _rlass_reduce_ ( pdf ):969 """Reduce LASS"""970 return root_store_factory , ( type ( pdf ) ,971 pdf.name ,972 pdf.title ,973 pdf.x () , 974 pdf.mass () ,975 pdf.widths ()[0] ,976 pdf.a () , 977 pdf.b () , 978 pdf.e () , 979 pdf.lass () )980Ostap.Models.LASS.__reduce__ = _rlass_reduce_ 981# =============================================================================982## reduce BWPS983def _rbwps_reduce_ ( pdf ):984 """Reduce BWPS"""985 return root_store_factory , ( type ( pdf ) ,986 pdf.name ,987 pdf.title ,988 pdf.x () , 989 pdf.mass () ,990 pdf.widths () ,991 pdf.phis () ,992 pdf.bwps () )993Ostap.Models.BWPS.__reduce__ = _rbwps_reduce_ 994# =============================================================================995## reduce BW3L996def _rbw3l_reduce_ ( pdf ):997 """Reduce BW3L"""998 return root_store_factory , ( type ( pdf ) ,999 pdf.name ,1000 pdf.title ,1001 pdf.x () , 1002 pdf.mass () ,1003 pdf.widths () ,1004 pdf.bw3l () )1005Ostap.Models.BW3L.__reduce__ = _rbw3l_reduce_ 1006# =============================================================================1007## reduce Voigt1008def _rvoigt_reduce_ ( pdf ):1009 """Reduce Voigt"""1010 return root_store_factory , ( type ( pdf ) ,1011 pdf.name ,1012 pdf.title ,1013 pdf.x () , 1014 pdf.m0 () ,1015 pdf.gamma () ,1016 pdf.sigma () )1017Ostap.Models.Voigt .__reduce__ = _rvoigt_reduce_ 1018Ostap.Models.PseudoVoigt.__reduce__ = _rvoigt_reduce_ 1019# =============================================================================1020## reduce CrystalBall1021def _rcb_reduce_ ( pdf ):1022 """Reduce CristalBall"""1023 return root_store_factory , ( type ( pdf ) ,1024 pdf.name ,1025 pdf.title ,1026 pdf.x () , 1027 pdf.m0 () ,1028 pdf.sigma () ,1029 pdf.alpha () ,1030 pdf.n () )1031Ostap.Models.CrystalBall .__reduce__ = _rcb_reduce_ 1032Ostap.Models.CrystalBallRS .__reduce__ = _rcb_reduce_ 1033# =============================================================================1034## reduce CrystalBallDS1035def _rcb2_reduce_ ( pdf ):1036 """Reduce CristalBallDS"""1037 return root_store_factory , ( type ( pdf ) ,1038 pdf.name ,1039 pdf.title ,1040 pdf.x () , 1041 pdf.m0 () ,1042 pdf.sigma () ,1043 pdf.alphaL () ,1044 pdf.nL () ,1045 pdf.alphaR () ,1046 pdf.nR () )1047Ostap.Models.CrystalBallDS .__reduce__ = _rcb2_reduce_ 1048# =============================================================================1049## reduce Needham1050def _rneedham_reduce_ ( pdf ):1051 """Reduce Needham"""1052 return root_store_factory , ( type ( pdf ) ,1053 pdf.name ,1054 pdf.title ,1055 pdf.x () , 1056 pdf.m0 () ,1057 pdf.sigma () , 1058 pdf.a0 () ,1059 pdf.a1 () ,1060 pdf.a2 () )1061Ostap.Models.Needham .__reduce__ = _rneedham_reduce_ 1062# =============================================================================1063## reduce Apollonious1064def _rapo_reduce_ ( pdf ):1065 """Reduce Apollonios"""1066 return root_store_factory , ( type ( pdf ) ,1067 pdf.name ,1068 pdf.title ,1069 pdf.x () , 1070 pdf.m0 () ,1071 pdf.sigma () , 1072 pdf.alpha () , 1073 pdf.n () ,1074 pdf.b () )1075Ostap.Models.Apollonios.__reduce__ = _rapo_reduce_ 1076# =============================================================================1077## reduce Apollonious21078def _rapo2_reduce_ ( pdf ):1079 """Reduce Apollonios2"""1080 return root_store_factory , ( type ( pdf ) ,1081 pdf.name ,1082 pdf.title ,1083 pdf.x () , 1084 pdf.m0 () ,1085 pdf.sigmaL () , 1086 pdf.sigmaR () , 1087 pdf.beta () )1088Ostap.Models.Apollonios2.__reduce__ = _rapo2_reduce_ 1089# =============================================================================1090## reduce BifurcatedGauss1091def _rgbf_reduce_ ( pdf ):1092 """Reduce BifurcatedGauss"""1093 return root_store_factory , ( type ( pdf ) ,1094 pdf.name ,1095 pdf.title ,1096 pdf.x () , 1097 pdf.peak () ,1098 pdf.sigmaL () , 1099 pdf.sigmaR () )1100Ostap.Models.BifurcatedGauss.__reduce__ = _rgbf_reduce_ 1101# =============================================================================1102## reduce GenGaussV11103def _rggv1_reduce_ ( pdf ):1104 """Reduce GenGaussV1"""1105 return root_store_factory , ( type ( pdf ) ,1106 pdf.name ,1107 pdf.title ,1108 pdf.x () , 1109 pdf.mu () ,1110 pdf.alpha () , 1111 pdf.beta () )1112Ostap.Models.GenGaussV1.__reduce__ = _rggv1_reduce_ 1113# =============================================================================1114## reduce GenGaussV21115def _rggv2_reduce_ ( pdf ):1116 """Reduce GenGaussV2"""1117 return root_store_factory , ( type ( pdf ) ,1118 pdf.name ,1119 pdf.title ,1120 pdf.x () , 1121 pdf.xi () ,1122 pdf.alpha () , 1123 pdf.kappa () )1124Ostap.Models.GenGaussV2.__reduce__ = _rggv2_reduce_ 1125# =============================================================================1126## reduce SkewGauss1127def _rskg_reduce_ ( pdf ):1128 """Reduce SkewGauss"""1129 return root_store_factory , ( type ( pdf ) ,1130 pdf.name ,1131 pdf.title ,1132 pdf.x () , 1133 pdf.xi () ,1134 pdf.omega () , 1135 pdf.alpha () )1136Ostap.Models.SkewGauss.__reduce__ = _rskg_reduce_ 1137# =============================================================================1138## reduce ExGauss1139def _rexg_reduce_ ( pdf ):1140 """Reduce ExGauss"""1141 return root_store_factory , ( type ( pdf ) ,1142 pdf.name ,1143 pdf.title ,1144 pdf.x () , 1145 pdf.mu () ,1146 pdf.varsigma () , 1147 pdf.k () )1148Ostap.Models.ExGauss.__reduce__ = _rexg_reduce_ 1149# =============================================================================1150## reduce NormalLaplace1151def _rnl_reduce_ ( pdf ):1152 """Reduce NormalLaplace"""1153 return root_store_factory , ( type ( pdf ) ,1154 pdf.name ,1155 pdf.title ,1156 pdf.x () , 1157 pdf.mu () ,1158 pdf.varsigma () , 1159 pdf.kL () ,1160 pdf.kL () )1161Ostap.Models.NormalLaplace.__reduce__ = _rnl_reduce_ 1162# =============================================================================1163## reduce Novosibirsk1164def _rnovo_reduce_ ( pdf ):1165 """Reduce Novisibirsk"""1166 return root_store_factory , ( type ( pdf ) ,1167 pdf.name ,1168 pdf.title ,1169 pdf.x () , 1170 pdf.peak () ,1171 pdf.sigma () , 1172 pdf.tau () )1173Ostap.Models.Novosibirsk.__reduce__ = _rnovo_reduce_ 1174# =============================================================================1175## reduce Bukin1176def _rbukin_reduce_ ( pdf ):1177 """Reduce Bukin"""1178 return root_store_factory , ( type ( pdf ) ,1179 pdf.name ,1180 pdf.title ,1181 pdf.x () , 1182 pdf.peak () ,1183 pdf.sigma () , 1184 pdf.xi () ,1185 pdf.rhoL () ,1186 pdf.rhoR () )1187Ostap.Models.Bukin.__reduce__ = _rbukin_reduce_ 1188# =============================================================================1189## reduce StudentT1190def _rstt_reduce_ ( pdf ):1191 """Reduce StudentT"""1192 return root_store_factory , ( type ( pdf ) ,1193 pdf.name ,1194 pdf.title ,1195 pdf.x () , 1196 pdf.mu () ,1197 pdf.sigma () , 1198 pdf.n () )1199Ostap.Models.StudentT.__reduce__ = _rstt_reduce_ 1200# =============================================================================1201## reduce BifurcatedStudentT1202def _rbstt_reduce_ ( pdf ):1203 """Reduce BifurcatedStudentT"""1204 return root_store_factory , ( type ( pdf ) ,1205 pdf.name ,1206 pdf.title ,1207 pdf.x () , 1208 pdf.mu () ,1209 pdf.sigmaL () , 1210 pdf.sigmaR () , 1211 pdf.nL () ,1212 pdf.nR () )1213Ostap.Models.BifurcatedStudentT.__reduce__ = _rbstt_reduce_ 1214# =============================================================================1215## reduce PearsonIV1216def _rp4_reduce_ ( pdf ):1217 """Reduce PearsonIV"""1218 return root_store_factory , ( type ( pdf ) ,1219 pdf.name ,1220 pdf.title ,1221 pdf.x () , 1222 pdf.mu () ,1223 pdf.varsigma () , 1224 pdf.n () , 1225 pdf.kappa () )1226Ostap.Models.PearsonIV.__reduce__ = _rp4_reduce_ 1227# =============================================================================1228## reduce GramCharlierA1229def _rgca_reduce_ ( pdf ):1230 """Reduce GramCharlierA"""1231 return root_store_factory , ( type ( pdf ) ,1232 pdf.name ,1233 pdf.title ,1234 pdf.x () , 1235 pdf.mu () ,1236 pdf.sigma () , 1237 pdf.kappa3 () ,1238 pdf.kappa4 () )1239Ostap.Models.GramCharlierA.__reduce__ = _rgca_reduce_ 1240# =============================================================================1241## reduce PhaseSpace21242def _rps2_reduce_ ( pdf ):1243 """Reduce PhaseSpace2"""1244 return root_store_factory , ( type ( pdf ) ,1245 pdf.name ,1246 pdf.title ,1247 pdf.x () , 1248 pdf.m1 () ,1249 pdf.m2 () )1250Ostap.Models.PhaseSpace2.__reduce__ = _rps2_reduce_ 1251# =============================================================================1252## reduce PhaseSpaceLeft1253def _rpsl_reduce_ ( pdf ):1254 """Reduce PhaseSpaceLeft"""1255 return root_store_factory , ( type ( pdf ) ,1256 pdf.name ,1257 pdf.title ,1258 pdf.x () , 1259 pdf.threshold () ,1260 pdf.scale () ,1261 pdf.left () )1262Ostap.Models.PhaseSpaceLeft.__reduce__ = _rpsl_reduce_ 1263# =============================================================================1264## reduce PhaseSpaceRight1265def _rpsr_reduce_ ( pdf ):1266 """Reduce PhaseSpaceRight"""1267 return root_store_factory , ( type ( pdf ) ,1268 pdf.name ,1269 pdf.title ,1270 pdf.x () , 1271 pdf.threshold () ,1272 pdf.L () ,1273 pdf.N () )1274Ostap.Models.PhaseSpaceRight.__reduce__ = _rpsr_reduce_ 1275# =============================================================================1276## reduce PhaseSpaceNL1277def _rpsnl_reduce_ ( pdf ):1278 """Reduce PhaseSpaceNL"""1279 return root_store_factory , ( type ( pdf ) ,1280 pdf.name ,1281 pdf.title ,1282 pdf.x () , 1283 pdf.low () ,1284 pdf.high () ,1285 pdf.N () ,1286 pdf.L () )1287Ostap.Models.PhaseSpaceNL.__reduce__ = _rpsnl_reduce_ 1288# =============================================================================1289## reduce PhaseSpacePol1290def _rpspol_reduce_ ( pdf ):1291 """Reduce PhaseSpacePol"""1292 return root_store_factory , ( type ( pdf ) ,1293 pdf.name ,1294 pdf.title ,1295 pdf.x () , 1296 pdf.psNL () ,1297 pdf.phis () )1298Ostap.Models.PhaseSpacePol.__reduce__ = _rpspol_reduce_ 1299# =============================================================================1300## reduce PhaseSpaceLeftExpoPol1301def _rpslepol_reduce_ ( pdf ):1302 """Reduce PhaseSpaceLeftExpoPol"""1303 return root_store_factory , ( type ( pdf ) ,1304 pdf.name ,1305 pdf.title ,1306 pdf.x () , 1307 pdf.psleft () ,1308 pdf.tau () ,1309 pdf.scale () ,1310 pdf.phis () )1311Ostap.Models.PhaseSpaceLeftExpoPol.__reduce__ = _rpslepol_reduce_ 1312## PhaseSpace23L - not done .... why?1313# =============================================================================1314## reduce PolyPositive 1315def _rpolpos_reduce_ ( pdf ):1316 """Reduce PolyPositive"""1317 return root_store_factory , ( type ( pdf ) ,1318 pdf.name ,1319 pdf.title ,1320 pdf.x () , 1321 pdf.phis () ,1322 pdf.xmin () ,1323 pdf.xmax () )1324Ostap.Models.PolyPositive.__reduce__ = _rpolpos_reduce_1325# =============================================================================1326## reduce PolyPositiveEven 1327def _rpolpose_reduce_ ( pdf ):1328 """Reduce PolyPositiveEven"""1329 return root_store_factory , ( type ( pdf ) ,1330 pdf.name ,1331 pdf.title ,1332 pdf.x () , 1333 pdf.phis () ,1334 pdf.xmin () ,1335 pdf.xmax () )1336Ostap.Models.PolyPositiveEven.__reduce__ = _rpolpose_reduce_ 1337# =============================================================================1338## reduce PolyMonotonic1339def _rpolmon_reduce_ ( pdf ):1340 """Reduce PolyMonotonic"""1341 return root_store_factory , ( type ( pdf ) ,1342 pdf.name ,1343 pdf.title ,1344 pdf.x () , 1345 pdf.phis () ,1346 pdf.xmin () ,1347 pdf.xmax () ,1348 pdf.increasing () )1349Ostap.Models.PolyMonotonic.__reduce__ = _rpolmon_reduce_ 1350# =============================================================================1351## reduce PolyConvex1352def _rpolcon_reduce_ ( pdf ):1353 """Reduce PolyConvex"""1354 return root_store_factory , ( type ( pdf ) ,1355 pdf.name ,1356 pdf.title ,1357 pdf.x () , 1358 pdf.phis () ,1359 pdf.xmin () ,1360 pdf.xmax () ,1361 pdf.increasing () ,1362 pdf.convex () )1363Ostap.Models.PolyConvex.__reduce__ = _rpolcon_reduce_ 1364# =============================================================================1365## reduce PolyConvexOnly1366def _rpolcono_reduce_ ( pdf ):1367 """Reduce PolyConvexOnly"""1368 return root_store_factory , ( type ( pdf ) ,1369 pdf.name ,1370 pdf.title ,1371 pdf.x () , 1372 pdf.phis () ,1373 pdf.xmin () ,1374 pdf.xmax () ,1375 pdf.convex () )1376Ostap.Models.PolyConvexOnly.__reduce__ = _rpolcono_reduce_ 1377# =============================================================================1378## reduce ExpoPositive1379def _rexppos_reduce_ ( pdf ):1380 """Reduce ExpoPoisitive"""1381 return root_store_factory , ( type ( pdf ) ,1382 pdf.name ,1383 pdf.title ,1384 pdf.x () , 1385 pdf.tau () ,1386 pdf.phis () ,1387 pdf.xmin () ,1388 pdf.xmax () )1389Ostap.Models.ExpoPositive.__reduce__ = _rexppos_reduce_ 1390# =============================================================================1391## reduce PolySigmoid1392def _rpolsigm_reduce_ ( pdf ):1393 """Reduce PoLySigmoid"""1394 return root_store_factory , ( type ( pdf ) ,1395 pdf.name ,1396 pdf.title ,1397 pdf.x () , 1398 pdf.phis () ,1399 pdf.xmin () ,1400 pdf.xmax () ,1401 pdf.alpha () ,1402 pdf.x0 () )1403Ostap.Models.PolySigmoid.__reduce__ = _rpolsigm_reduce_ 1404# =============================================================================1405## reduce TwoExpoPositive1406def _r2exppos_reduce_ ( pdf ):1407 """Reduce TwoExpoPositive"""1408 return root_store_factory , ( type ( pdf ) ,1409 pdf.name ,1410 pdf.title ,1411 pdf.x () , 1412 pdf.alpha () ,1413 pdf.delta () ,1414 pdf.x0 () ,1415 pdf.phis () ,1416 pdf.xmin () ,1417 pdf.xmax () )1418Ostap.Models.TwoExpoPositive.__reduce__ = _r2exppos_reduce_ 1419# =============================================================================1420## reduce GammaDist1421def _rgamdist_reduce_ ( pdf ):1422 """Reduce GammaDist"""1423 return root_store_factory , ( type ( pdf ) ,1424 pdf.name ,1425 pdf.title ,1426 pdf.x () , 1427 pdf.k () ,1428 pdf.theta () )1429Ostap.Models.GammaDist .__reduce__ = _rgamdist_reduce_ 1430Ostap.Models.LogGammaDist .__reduce__ = _rgamdist_reduce_ 1431Ostap.Models.Log10GammaDist.__reduce__ = _rgamdist_reduce_ 1432# =============================================================================1433## reduce GenGammaDist1434def _rggamdist_reduce_ ( pdf ):1435 """Reduce GenGammaDist"""1436 return root_store_factory , ( type ( pdf ) ,1437 pdf.name ,1438 pdf.title ,1439 pdf.x () , 1440 pdf.k () ,1441 pdf.theta () ,1442 pdf.p () ,1443 pdf.low () )1444Ostap.Models.GenGammaDist.__reduce__ = _rggamdist_reduce_ 1445# =============================================================================1446## reduce Amoroso1447def _ramoroso_reduce_ ( pdf ):1448 """Reduce Amoroso"""1449 return root_store_factory , ( type ( pdf ) ,1450 pdf.name ,1451 pdf.title ,1452 pdf.x () , 1453 pdf.theta () ,1454 pdf.alpha () ,1455 pdf.beta () ,1456 pdf.a () )1457Ostap.Models.Amoroso.__reduce__ = _ramoroso_reduce_ 1458# =============================================================================1459## reduce LogGamma1460def _rloggam_reduce_ ( pdf ):1461 """Reduce LogGamma"""1462 return root_store_factory , ( type ( pdf ) ,1463 pdf.name ,1464 pdf.title ,1465 pdf.x () , 1466 pdf.nu () ,1467 pdf.lambd () ,1468 pdf.alpha () )1469Ostap.Models.LogGamma .__reduce__ = _rloggam_reduce_ 1470# =============================================================================1471## reduce BetaPrime1472def _rbetap_reduce_ ( pdf ):1473 """Reduce BetaPrime"""1474 return root_store_factory , ( type ( pdf ) ,1475 pdf.name ,1476 pdf.title ,1477 pdf.x () , 1478 pdf.alpha () ,1479 pdf.beta () ,1480 pdf.scale () ,1481 pdf.shift () )1482Ostap.Models.BetaPrime.__reduce__ = _rbetap_reduce_ 1483# =============================================================================1484## reduce Landau1485def _rlandau_reduce_ ( pdf ):1486 """Reduce Landau"""1487 return root_store_factory , ( type ( pdf ) ,1488 pdf.name ,1489 pdf.title ,1490 pdf.x () , 1491 pdf.scale () ,1492 pdf.shift () )1493Ostap.Models.Landau.__reduce__ = _rlandau_reduce_ 1494# =============================================================================1495## reduce SinhAsinh1496def _rshash_reduce_ ( pdf ):1497 """Reduce SinhAsinh"""1498 return root_store_factory , ( type ( pdf ) ,1499 pdf.name ,1500 pdf.title ,1501 pdf.x () , 1502 pdf.mu () ,1503 pdf.sigma () ,1504 pdf.epsilon () ,1505 pdf.delta () )1506Ostap.Models.SinhAsinh.__reduce__ = _rshash_reduce_ 1507# =============================================================================1508## reduce JohnsonSU1509def _rjsu_reduce_ ( pdf ):1510 """Reduce JohnsonSU"""1511 return root_store_factory , ( type ( pdf ) ,1512 pdf.name ,1513 pdf.title ,1514 pdf.x () , 1515 pdf.xi () ,1516 pdf.lambd () ,1517 pdf.delta () ,1518 pdf.gamma () )1519Ostap.Models.JohnsonSU.__reduce__ = _rjsu_reduce_ 1520# =============================================================================1521## reduce ATLAS1522def _ratlas_reduce_ ( pdf ):1523 """Reduce Atlas"""1524 return root_store_factory , ( type ( pdf ) ,1525 pdf.name ,1526 pdf.title ,1527 pdf.x () , 1528 pdf.mu () ,1529 pdf.sigma () )1530Ostap.Models.Atlas .__reduce__ = _ratlas_reduce_ 1531Ostap.Models.Sech .__reduce__ = _ratlas_reduce_ 1532Ostap.Models.Logistic .__reduce__ = _ratlas_reduce_ 1533Ostap.Models.Hat .__reduce__ = _ratlas_reduce_ 1534Ostap.Models.Up .__reduce__ = _ratlas_reduce_ 1535# =============================================================================1536## reduce Slash1537def _rslash_reduce_ ( pdf ):1538 """Reduce Slasj"""1539 return root_store_factory , ( type ( pdf ) ,1540 pdf.name ,1541 pdf.title ,1542 pdf.x () , 1543 pdf.mu () ,1544 pdf.scale () )1545Ostap.Models.Slash .__reduce__ = _rslash_reduce_ 1546# =============================================================================1547## reduce ARGUS1548def _rargus_reduce_ ( pdf ):1549 """Reduce ARGUS"""1550 return root_store_factory , ( type ( pdf ) ,1551 pdf.name ,1552 pdf.title ,1553 pdf.x () , 1554 pdf.mu () ,1555 pdf.c () ,1556 pdf.chi () )1557Ostap.Models.Argus .__reduce__ = _rargus_reduce_ 1558# =============================================================================1559## reduce GenArgus1560def _rgargus_reduce_ ( pdf ):1561 """Reduce GenArgus"""1562 return root_store_factory , ( type ( pdf ) ,1563 pdf.name ,1564 pdf.title ,1565 pdf.x () , 1566 pdf.mu () ,1567 pdf.c () ,1568 pdf.chi () ,1569 pdf.dp () )1570Ostap.Models.GenArgus .__reduce__ = _rgargus_reduce_ 1571# =============================================================================1572## reduce Losev1573def _rlosev_reduce_ ( pdf ):1574 """Reduce Losev"""1575 return root_store_factory , ( type ( pdf ) ,1576 pdf.name ,1577 pdf.title ,1578 pdf.x () , 1579 pdf.mu () ,1580 pdf.alpha () ,1581 pdf.beta () )1582Ostap.Models.Losev.__reduce__ = _rlosev_reduce_ 1583# =============================================================================1584## reduce AsymmetricLaplace1585def _ralap_reduce_ ( pdf ):1586 """Reduce AsymmetricLaplace"""1587 return root_store_factory , ( type ( pdf ) ,1588 pdf.name ,1589 pdf.title ,1590 pdf.x () , 1591 pdf.mu () ,1592 pdf.lambdaL () ,1593 pdf.lambdaR () )1594Ostap.Models.AsymmetricLaplace.__reduce__ = _ralap_reduce_ 1595# =============================================================================1596## reduce FupN1597def _rfupn_reduce_ ( pdf ):1598 """Reduce FupN"""1599 return root_store_factory , ( type ( pdf ) ,1600 pdf.name ,1601 pdf.title ,1602 pdf.x () , 1603 pdf.N () , 1604 pdf.mu () ,1605 pdf.varsigma () )1606Ostap.Models.FupN.__reduce__ = _rfupn_reduce_ 1607# =============================================================================1608## reduce Tsallis1609def _rtsal_reduce_ ( pdf ):1610 """Reduce Tsallis"""1611 return root_store_factory , ( type ( pdf ) ,1612 pdf.name ,1613 pdf.title ,1614 pdf.pt () , 1615 pdf.N () , 1616 pdf.T () ,1617 pdf.mass () )1618Ostap.Models.Tsallis.__reduce__ = _rtsal_reduce_ 1619# =============================================================================1620## reduce QGSM1621def _rqgsm_reduce_ ( pdf ):1622 """Reduce QGSM"""1623 return root_store_factory , ( type ( pdf ) ,1624 pdf.name ,1625 pdf.title ,1626 pdf.x () , 1627 pdf.b () , 1628 pdf.mass () )1629Ostap.Models.QGSM.__reduce__ = _rqgsm_reduce_ 1630# =============================================================================1631## reduce Tsallis21632def _rtsal2_reduce_ ( pdf ):1633 """Reduce Tsallis2"""1634 return root_store_factory , ( type ( pdf ) ,1635 pdf.name ,1636 pdf.title ,1637 pdf.pt () , 1638 pdf.y () , 1639 pdf.mass () , 1640 pdf.T () ,1641 pdf.q () ,1642 pdf.mu () )1643Ostap.Models.Tsallis2.__reduce__ = _rtsal2_reduce_ 1644# =============================================================================1645## reduce TwoExpos1646def _r2expo_reduce_ ( pdf ):1647 """Reduce TwoExpos"""1648 return root_store_factory , ( type ( pdf ) ,1649 pdf.name ,1650 pdf.title ,1651 pdf.x () , 1652 pdf.alpha () , 1653 pdf.delta () ,1654 pdf.x0 () )1655Ostap.Models.TwoExpos.__reduce__ = _r2expo_reduce_ 1656# =============================================================================1657## reduce DoubleGauss1658def _r2gau_reduce_ ( pdf ):1659 """Reduce DoubleGauss"""1660 return root_store_factory , ( type ( pdf ) ,1661 pdf.name ,1662 pdf.title ,1663 pdf.x () , 1664 pdf.sigma () , 1665 pdf.fraction () ,1666 pdf.scale () ,1667 pdf.mean () )1668Ostap.Models.DoubleGauss.__reduce__ = _r2gau_reduce_ 1669# =============================================================================1670## reduce Gumbel1671def _rgumbel_reduce_ ( pdf ):1672 """Reduce Gumbel"""1673 return root_store_factory , ( type ( pdf ) ,1674 pdf.name ,1675 pdf.title ,1676 pdf.x () , 1677 pdf.mu () , 1678 pdf.beta () )1679Ostap.Models.Gumbel.__reduce__ = _rgumbel_reduce_ 1680# =============================================================================1681## reduce Weibull1682def _rweibull_reduce_ ( pdf ):1683 """Reduce Weibull"""1684 return root_store_factory , ( type ( pdf ) ,1685 pdf.name ,1686 pdf.title ,1687 pdf.x () , 1688 pdf.scale () , 1689 pdf.shape () ,1690 pdf.shift () )1691Ostap.Models.Weibull.__reduce__ = _rweibull_reduce_ 1692# =============================================================================1693## reduce Rice1694def _rrice_reduce_ ( pdf ):1695 """Reduce Rice"""1696 return root_store_factory , ( type ( pdf ) ,1697 pdf.name ,1698 pdf.title ,1699 pdf.x () , 1700 pdf.nu () , 1701 pdf.varshigma () ,1702 pdf.shift () )1703Ostap.Models.Rice.__reduce__ = _rrice_reduce_ 1704# =============================================================================1705## reduce RasingCosine 1706def _rrcos_reduce_ ( pdf ):1707 """Reduce RaisingCosine"""1708 return root_store_factory , ( type ( pdf ) ,1709 pdf.name ,1710 pdf.title ,1711 pdf.x () , 1712 pdf.mean () , 1713 pdf.scale () )1714Ostap.Models.RaisingCosine.__reduce__ = _rrcos_reduce_ 1715# =============================================================================1716## reduce q-Gaussian1717def _rqgau_reduce_ ( pdf ):1718 """Reduce QGaussian"""1719 return root_store_factory , ( type ( pdf ) ,1720 pdf.name ,1721 pdf.title ,1722 pdf.x () , 1723 pdf.mean () , 1724 pdf.scale () ,1725 pdf.q () )1726Ostap.Models.QGaussian.__reduce__ = _rqgau_reduce_ 1727# =============================================================================1728## reduce Hyperbolic1729def _rhyp_reduce_ ( pdf ):1730 """Reduce Hyperbolic"""1731 return root_store_factory , ( type ( pdf ) ,1732 pdf.name ,1733 pdf.title ,1734 pdf.x () , 1735 pdf.mu () , 1736 pdf.sigma () ,1737 pdf.zeta () ,1738 pdf.kappa () )1739Ostap.Models.Hyperbolic.__reduce__ = _rhyp_reduce_ 1740# =============================================================================1741## reduce GenHyperbolic1742def _rghyp_reduce_ ( pdf ):1743 """Reduce GenHyperbolic"""1744 return root_store_factory , ( type ( pdf ) ,1745 pdf.name ,1746 pdf.title ,1747 pdf.x () , 1748 pdf.mu () , 1749 pdf.sigma () ,1750 pdf.zeta () ,1751 pdf.kappa () ,1752 pdf.lambd () )1753Ostap.Models.GenHyperbolic.__reduce__ = _rghyp_reduce_ 1754# =============================================================================1755## reduce Das1756def _rdas_reduce_ ( pdf ):1757 """Reduce Das"""1758 return root_store_factory , ( type ( pdf ) ,1759 pdf.name ,1760 pdf.title ,1761 pdf.x () , 1762 pdf.mu () , 1763 pdf.sigma () ,1764 pdf.kL () ,1765 pdf.kR () )1766Ostap.Models.Das.__reduce__ = _rdas_reduce_ 1767# =============================================================================1768## reduce GenInvGauss1769def _rgig_reduce_ ( pdf ):1770 """Reduce GenInvGauss"""1771 return root_store_factory , ( type ( pdf ) ,1772 pdf.name ,1773 pdf.title ,1774 pdf.x () , 1775 pdf.theta () , 1776 pdf.eta () ,1777 pdf.p () ,1778 pdf.shift () )1779Ostap.Models.GenInvGauss.__reduce__ = _rgig_reduce_ 1780# =============================================================================1781## reduce PositiveSpline 1782def _rsplpos_reduce_ ( pdf ):1783 """Reduce PositiveSpline"""1784 return root_store_factory , ( type ( pdf ) ,1785 pdf.name ,1786 pdf.title ,1787 pdf.x () , 1788 pdf.spline () , 1789 pdf.phis () )1790Ostap.Models.PositiveSpline .__reduce__ = _rsplpos_reduce_ 1791Ostap.Models.MonotonicSpline .__reduce__ = _rsplpos_reduce_ 1792Ostap.Models.ConvexSpline .__reduce__ = _rsplpos_reduce_ 1793Ostap.Models.ConvexOnlySpline .__reduce__ = _rsplpos_reduce_ 1794# =============================================================================1795## reduce HORNSdini1796def _rdini_reduce_ ( pdf ):1797 """Reduce HORNSdini"""1798 return root_store_factory , ( type ( pdf ) ,1799 pdf.name ,1800 pdf.title ,1801 pdf.x () , 1802 pdf.a () , 1803 pdf.delta () ,1804 pdf.phi () )1805Ostap.Models.HORNSdini.__reduce__ = _rdini_reduce_ 1806Ostap.Models.HILLdini .__reduce__ = _rdini_reduce_ 1807# =============================================================================1808## reduce Histo1D1809def _rh1d_reduce_ ( pdf ) :1810 """reduce Histo1D"""1811 return root_store_factory , ( type ( pdf ) ,1812 pdf.name ,1813 pdf.title ,1814 pdf.x () , 1815 pdf.histo () )1816Ostap.Models.Histo1D.__reduce__ = _rh1d_reduce_ 1817# =============================================================================1818## reduce Histo2D1819def _rh2d_reduce_ ( pdf ) :1820 """reduce Histo2D"""1821 return root_store_factory , ( type ( pdf ) ,1822 pdf.name ,1823 pdf.title ,1824 pdf.x () , 1825 pdf.y () , 1826 pdf.histo () )1827Ostap.Models.Histo2D.__reduce__ = _rh2d_reduce_ 1828# =============================================================================1829## reduce Histo3D1830def _rh3d_reduce_ ( pdf ) :1831 """reduce Histo3D"""1832 return root_store_factory , ( type ( pdf ) ,1833 pdf.name ,1834 pdf.title ,1835 pdf.x () , 1836 pdf.y () , 1837 pdf.z () , 1838 pdf.histo () )1839Ostap.Models.Histo3D.__reduce__ = _rh3d_reduce_ 1840# =============================================================================1841## reduce CutoffGauss1842def _rcutgau_reduce_ ( pdf ):1843 """Reduce CutOffGauss"""1844 return root_store_factory , ( type ( pdf ) ,1845 pdf.name ,1846 pdf.title ,1847 pdf.x () , 1848 pdf.x0 () , 1849 pdf.sigma () ,1850 pdf.cutoff () )1851Ostap.Models.CutOffGauss.__reduce__ = _rcutgau_reduce_ 1852# =============================================================================1853## reduce CutoffStudent1854def _rcutstt_reduce_ ( pdf ):1855 """Reduce CutOffStudent"""1856 return root_store_factory , ( type ( pdf ) ,1857 pdf.name ,1858 pdf.title ,1859 pdf.x () , 1860 pdf.x0 () , 1861 pdf.nu () ,1862 pdf.sigma () ,1863 pdf.cutoff () )1864Ostap.Models.CutOffStudent.__reduce__ = _rcutstt_reduce_ 1865# =============================================================================1866## 2D PDFs1867# =============================================================================1868# =============================================================================1869## reduce Poly2DPositive1870def _rpol2d_reduce_ ( pdf ):1871 """Reduce Poly2DPositive"""1872 return root_store_factory , ( type ( pdf ) ,1873 pdf.name ,1874 pdf.title ,1875 pdf.x () , 1876 pdf.y () , 1877 pdf.nX () , 1878 pdf.nY () ,1879 pdf.phis () )1880Ostap.Models.Poly2DPositive.__reduce__ = _rpol2d_reduce_ 1881# =============================================================================1882## reduce Poly2DSymPositive1883def _rpol2ds_reduce_ ( pdf ):1884 """Reduce Poly2DSymPositive"""1885 return root_store_factory , ( type ( pdf ) ,1886 pdf.name ,1887 pdf.title ,1888 pdf.x () , 1889 pdf.y () , 1890 pdf.n () , 1891 pdf.phis () )1892Ostap.Models.Poly2DSymPositive.__reduce__ = _rpol2ds_reduce_ 1893# =============================================================================1894## reduce PS2DPol1895def _rps2dpol_reduce_ ( pdf ):1896 """Reduce PS2DPol"""1897 return root_store_factory , ( type ( pdf ) ,1898 pdf.name ,1899 pdf.title ,1900 pdf.x () , 1901 pdf.y () ,1902 pdf.psX () , 1903 pdf.psY () , 1904 pdf.nX () , 1905 pdf.nX () , 1906 pdf.phis () )1907Ostap.Models.PS2DPol.__reduce__ = _rps2dpol_reduce_ 1908# =============================================================================1909## reduce PS2DPolSym1910def _rps2dpols_reduce_ ( pdf ):1911 """Reduce PS2DPolSym"""1912 return root_store_factory , ( type ( pdf ) ,1913 pdf.name ,1914 pdf.title ,1915 pdf.x () , 1916 pdf.y () ,1917 pdf.psX () , 1918 pdf.n () , 1919 pdf.phis () )1920Ostap.Models.PS2DPolSym.__reduce__ = _rps2dpols_reduce_ 1921# =============================================================================1922## reduce PS2DPol21923def _rps2dpol2_reduce_ ( pdf ):1924 """Reduce PS2DPol2"""1925 return root_store_factory , ( type ( pdf ) ,1926 pdf.name ,1927 pdf.title ,1928 pdf.x () , 1929 pdf.y () ,1930 pdf.psX () , 1931 pdf.psY () , 1932 pdf.mmax () , 1933 pdf.nX () , 1934 pdf.nY () , 1935 pdf.phis () )1936Ostap.Models.PS2DPol2.__reduce__ = _rps2dpol2_reduce_ 1937Ostap.Models.PS2DPol3.__reduce__ = _rps2dpol2_reduce_ 1938# =============================================================================1939## reduce PS2DPol2Sym1940def _rps2dpol2s_reduce_ ( pdf ):1941 """Reduce PS2DPol2Sym"""1942 return root_store_factory , ( type ( pdf ) ,1943 pdf.name ,1944 pdf.title ,1945 pdf.x () , 1946 pdf.y () ,1947 pdf.psX () , 1948 pdf.mmax () , 1949 pdf.nX () , 1950 pdf.phis () )1951Ostap.Models.PS2DPol2Sym.__reduce__ = _rps2dpol2s_reduce_ 1952Ostap.Models.PS2DPol3Sym.__reduce__ = _rps2dpol2s_reduce_ 1953# =============================================================================1954## Reduce Expo2DPol1955def _rexp2d_reduce_ ( pdf ):1956 """Reduce Expo2DPol"""1957 return root_store_factory , ( type ( pdf ) ,1958 pdf.name ,1959 pdf.title ,1960 pdf.x () , 1961 pdf.y () ,1962 pdf.taux () , 1963 pdf.tauy () , 1964 pdf.nX () , 1965 pdf.nY () , 1966 pdf.phis () )1967Ostap.Models.Expo2DPol.__reduce__ = _rexp2d_reduce_ 1968# =============================================================================1969## Reduce Expo2DPolSym1970def _rexp2ds_reduce_ ( pdf ):1971 """Reduce Expo2DPolSym"""1972 return root_store_factory , ( type ( pdf ) ,1973 pdf.name ,1974 pdf.title ,1975 pdf.x () , 1976 pdf.y () ,1977 pdf.tau () , 1978 pdf.nX () , 1979 pdf.phis () )1980Ostap.Models.Expo2DPolSym.__reduce__ = _rexp2ds_reduce_ 1981# =============================================================================1982## Reduce ExpoPS2DPol1983def _rexpps2d_reduce_ ( pdf ):1984 """Reduce ExpoPS2DPol"""1985 return root_store_factory , ( type ( pdf ) ,1986 pdf.name ,1987 pdf.title ,1988 pdf.x () , 1989 pdf.y () ,1990 pdf.tau () , 1991 pdf.psY () , 1992 pdf.nX () , 1993 pdf.nY () , 1994 pdf.phis () )1995Ostap.Models.ExpoPS2DPol.__reduce__ = _rexpps2d_reduce_ 1996# =============================================================================1997## reduce Spline2D1998def _rspl2d_reduce_ ( pdf ):1999 """Reduce Spline2D"""2000 return root_store_factory , ( type ( pdf ) ,2001 pdf.name ,2002 pdf.title ,2003 pdf.x () , 2004 pdf.y () , 2005 pdf.spline () , 2006 pdf.phis () )2007Ostap.Models.Spline2D .__reduce__ = _rspl2d_reduce_ 2008# =============================================================================2009## reduce Spline2DSym2010def _rspl2ds_reduce_ ( pdf ):2011 """Reduce Spline2DSym"""2012 return root_store_factory , ( type ( pdf ) ,2013 pdf.name ,2014 pdf.title ,2015 pdf.x () , 2016 pdf.y () , 2017 pdf.spline () , 2018 pdf.phis () )2019Ostap.Models.Spline2DSym.__reduce__ = _rspl2ds_reduce_ 2020# =============================================================================2021## reduce Gauss2D2022def _rgauss2d_reduce_ ( pdf ):2023 """Reduce Gauss2D"""2024 return root_store_factory , ( type ( pdf ) ,2025 pdf.name ,2026 pdf.title ,2027 pdf.x () , 2028 pdf.y () , 2029 pdf.muX () , 2030 pdf.muY () , 2031 pdf.sigmaX () , 2032 pdf.sigmaY () , 2033 pdf.theta () )2034Ostap.Models.Gauss2D.__reduce__ = _rgauss2d_reduce_ 2035# =============================================================================2036## reduce Poly3DPositive2037def _rpol3d_reduce_ ( pdf ):2038 """Reduce Poly3DPositive"""2039 return root_store_factory , ( type ( pdf ) ,2040 pdf.name ,2041 pdf.title ,2042 pdf.x () , 2043 pdf.y () , 2044 pdf.z () , 2045 pdf.nX () , 2046 pdf.nX () , 2047 pdf.nY () , 2048 pdf.nZ () , 2049 pdf.phis () )2050Ostap.Models.Poly3DPositive.__reduce__ = _rpol3d_reduce_ 2051# =============================================================================2052## reduce Poly3DSymPositive2053def _rpol3ds_reduce_ ( pdf ):2054 """Reduce Poly3DSymPosiitive"""2055 return root_store_factory , ( type ( pdf ) ,2056 pdf.name ,2057 pdf.title ,2058 pdf.x () , 2059 pdf.y () , 2060 pdf.z () , 2061 pdf.nX () , 2062 pdf.phis () )2063Ostap.Models.Poly3DSymPositive.__reduce__ = _rpol3ds_reduce_ 2064# =============================================================================2065## reduce Poly3DMixPositive2066def _rpol3dm_reduce_ ( pdf ):2067 """Reduce Poly3DMixPosiitive"""2068 return root_store_factory , ( type ( pdf ) ,2069 pdf.name ,2070 pdf.title ,2071 pdf.x () , 2072 pdf.y () , 2073 pdf.z () , 2074 pdf.nX () , 2075 pdf.nZ () , 2076 pdf.phis () )2077Ostap.Models.Poly3DMixPositive.__reduce__ = _rpol3dm_reduce_ 2078# =============================================================================2079## reduce Gauss3D2080def _rgauss3d_reduce_ ( pdf ):2081 """Reduce Gauss3D"""2082 return root_store_factory , ( type ( pdf ) ,2083 pdf.name ,2084 pdf.title ,2085 pdf.x () , 2086 pdf.y () , 2087 pdf.z () , 2088 pdf.muX () , 2089 pdf.muY () , 2090 pdf.muZ () , 2091 pdf.sigmaX () , 2092 pdf.sigmaY () , 2093 pdf.sigmaZ () , 2094 pdf.phi () ,2095 pdf.theta () ,2096 pdf.psi () )2097Ostap.Models.Gauss3D.__reduce__ = _rgauss3d_reduce_ 2098# =============================================================================2099## reduce Ostap::Functions::FuncRooTH1 2100def _rfth1_reduce_ ( fun ):2101 """Reduce Ostap.Functions.FuncTH1"""2102 return root_factory , ( type ( fun ) ,2103 fun.histo () ,2104 fun.x () )2105# =============================================================================2106## reduce Ostap::Functions::FuncRooTH3 2107def _rfth2_reduce_ ( fun ):2108 """Reduce Ostap.Functions.FuncRooTH2"""2109 return root_factory , ( type ( fun ) ,2110 fun.histo () ,2111 fun.x () , 2112 fun.y () )2113# =============================================================================2114## reduce Ostap::Functions::FuncRooTH32115def _rfth3_reduce_ ( fun ):2116 """Reduce Ostap.Functions.FuncRooTH3"""2117 return root_factory , ( type ( fun ) ,2118 fun.histo () ,2119 fun.x () ,2120 fun.y () ,2121 fun.z () )2122# =============================================================================2123## reduce Ostap::Functions::FuncRooFormula2124def _rfff_reduce_ ( fun ):2125 """Reduce Ostap.Functions.FuncRooFormula"""2126 return root_factory , ( type ( fun ) , fun.expression() )2127Ostap.Functions.FuncRooTH1 . __reduce__ = _rfth1_reduce_2128Ostap.Functions.FuncRooTH2 . __reduce__ = _rfth2_reduce_2129Ostap.Functions.FuncRooTH3 . __reduce__ = _rfth3_reduce_2130Ostap.Functions.FuncRooFormula . __reduce__ = _rfff_reduce_2131# =============================================================================2132_decorated_classes_ = (2133 ## ROOT/RooFit classes 2134 ROOT.RooBinning , 2135 ROOT.RooUniformBinning , 2136 ROOT.RooRangeBinning , 2137 ROOT.RooArgSet , 2138 ROOT.RooArgList , 2139 ROOT.RooGaussian , 2140 ROOT.RooMultiVarGaussian , 2141 ROOT.RooAddPdf , 2142 ROOT.RooProdPdf , 2143 ROOT.RooFFTConvPdf , 2144 ROOT.RooSimultaneous , 2145 ROOT.RooEfficiency , 2146 ROOT.RooPolyVar , 2147 ROOT.RooPolynomial , 2148 ROOT.RooFitResult ,2149 ROOT.RooPlot ,2150 ROOT.RooCurve ,2151 ROOT.RooEllipse ,2152 ROOT.RooHist ,2153 ## Ostap classes 2154 Ostap.MoreRooFit.TwoVars , 2155 Ostap.MoreRooFit.Addition , 2156 Ostap.MoreRooFit.Addition2 , 2157 Ostap.MoreRooFit.Subtraction , 2158 Ostap.MoreRooFit.Product , 2159 Ostap.MoreRooFit.ProductPdf , 2160 Ostap.MoreRooFit.Id , 2161 Ostap.MoreRooFit.AddDeps , 2162 Ostap.MoreRooFit.Combination , 2163 Ostap.MoreRooFit.Asymmetry , 2164 Ostap.MoreRooFit.Constant , 2165 Ostap.MoreRooFit.Bernstein , 2166 Ostap.MoreRooFit.Monotonic , 2167 Ostap.MoreRooFit.Convex , 2168 Ostap.MoreRooFit.ConvexOnly , 2169 Ostap.MoreRooFit.BSpline ,2170 ##2171 Ostap.Models.Uniform ,2172 ## BW & friends 2173 Ostap.Models.BreitWigner , 2174 Ostap.Models.BreitWignerMC , 2175 Ostap.Models.BWI , 2176 Ostap.Models.Flatte ,2177 Ostap.Models.LASS ,2178 Ostap.Models.BWPS ,2179 Ostap.Models.BW3L ,2180 ## others 2181 Ostap.Models.Uniform ,2182 Ostap.Models.Voigt , 2183 Ostap.Models.PseudoVoigt , 2184 Ostap.Models.CrystalBall , 2185 Ostap.Models.CrystalBallRS , 2186 Ostap.Models.CrystalBallDS , 2187 Ostap.Models.Needham ,2188 Ostap.Models.Apollonios , 2189 Ostap.Models.Apollonios2 , 2190 Ostap.Models.BifurcatedGauss , 2191 Ostap.Models.GenGaussV1 , 2192 Ostap.Models.GenGaussV2 , 2193 Ostap.Models.SkewGauss , 2194 Ostap.Models.ExGauss , 2195 Ostap.Models.NormalLaplace , 2196 Ostap.Models.Novosibirsk , 2197 Ostap.Models.Bukin , 2198 Ostap.Models.StudentT , 2199 Ostap.Models.BifurcatedStudentT , 2200 Ostap.Models.PearsonIV ,2201 Ostap.Models.GramCharlierA , 2202 Ostap.Models.PhaseSpace2 , 2203 Ostap.Models.PhaseSpaceLeft , 2204 Ostap.Models.PhaseSpaceRight , 2205 Ostap.Models.PhaseSpaceNL , 2206 Ostap.Models.PhaseSpacePol , 2207 Ostap.Models.PhaseSpaceLeftExpoPol , 2208 ##2209 Ostap.Models.PolyPositive , 2210 Ostap.Models.PolyPositiveEven , 2211 Ostap.Models.PolyMonotonic , 2212 Ostap.Models.PolyConvex , 2213 Ostap.Models.PolyConvexOnly , 2214 Ostap.Models.ExpoPositive , 2215 Ostap.Models.PolySigmoid , 2216 Ostap.Models.TwoExpoPositive , 2217 Ostap.Models.GammaDist , 2218 Ostap.Models.LogGammaDist , 2219 Ostap.Models.Log10GammaDist , 2220 Ostap.Models.GenGammaDist , 2221 Ostap.Models.Amoroso , 2222 Ostap.Models.LogGamma , 2223 Ostap.Models.BetaPrime , 2224 Ostap.Models.Landau , 2225 Ostap.Models.SinhAsinh , 2226 Ostap.Models.JohnsonSU , 2227 Ostap.Models.Atlas , 2228 Ostap.Models.Sech , 2229 Ostap.Models.Logistic ,2230 Ostap.Models.Hat , 2231 Ostap.Models.Up , 2232 Ostap.Models.Slash , 2233 Ostap.Models.Argus , 2234 Ostap.Models.GenArgus , 2235 Ostap.Models.Losev , 2236 Ostap.Models.AsymmetricLaplace , 2237 Ostap.Models.FupN , 2238 Ostap.Models.Tsallis , 2239 Ostap.Models.QGSM , 2240 Ostap.Models.TwoExpos , 2241 Ostap.Models.DoubleGauss , 2242 Ostap.Models.Gumbel , 2243 Ostap.Models.Weibull , 2244 Ostap.Models.QGaussian , 2245 Ostap.Models.Hyperbolic , 2246 Ostap.Models.GenHyperbolic , 2247 Ostap.Models.Das , 2248 Ostap.Models.GenInvGauss , 2249 Ostap.Models.PositiveSpline , 2250 Ostap.Models.MonotonicSpline , 2251 Ostap.Models.ConvexSpline , 2252 Ostap.Models.ConvexOnlySpline , 2253 Ostap.Models.HORNSdini , 2254 Ostap.Models.HILLdini , 2255 Ostap.Models.Histo1D , 2256 Ostap.Models.Histo2D , 2257 Ostap.Models.Histo3D , 2258 Ostap.Models.CutOffGauss , 2259 Ostap.Models.CutOffStudent , 2260 ## 2D models 2261 Ostap.Models.Poly2DPositive , 2262 Ostap.Models.Poly2DSymPositive , 2263 Ostap.Models.PS2DPol , 2264 Ostap.Models.PS2DPol2 , 2265 Ostap.Models.PS2DPol3 , 2266 Ostap.Models.PS2DPolSym , 2267 Ostap.Models.PS2DPol2Sym , 2268 Ostap.Models.PS2DPol3Sym , 2269 Ostap.Models.Expo2DPol , 2270 Ostap.Models.Expo2DPolSym , 2271 Ostap.Models.ExpoPS2DPol , 2272 Ostap.Models.Spline2DSym , 2273 Ostap.Models.Gauss2D , 2274 Ostap.Models.Tsallis2 , 2275 ## 3D models 2276 Ostap.Models.Poly3DPositive , 2277 Ostap.Models.Poly3DSymPositive , 2278 Ostap.Models.Poly3DMixPositive , 2279 Ostap.Models.Gauss3D ,2280 ## 2281 Ostap.Functions.FuncRooTH1 , 2282 Ostap.Functions.FuncRooTH2 , 2283 Ostap.Functions.FuncRooTH3 , 2284 Ostap.Functions.FuncRooFormula , 2285 )2286for t in _decorated_classes_ :2287 _new_methods_.append ( t.__reduce__ )2288_new_methods_ = tuple ( _new_methods_ ) 2289# =============================================================================2290if '__main__' == __name__ :2291 2292 from ostap.utils.docme import docme2293 docme ( __name__ , logger = logger )2294 2295# =============================================================================2296## The END ...

Full Screen

Full Screen

more_reduce.py

Source:more_reduce.py Github

copy

Full Screen

1#!/usr/bin/env python2# -*- coding: utf-8 -*-3# =============================================================================4## @file ostap/math/reduce.py5# Module with some useful utilities for reducing some math objects 6# =============================================================================7__version__ = "$Revision$"8__author__ = "Vanya BELYAEV Ivan.Belyaev@cern.ch"9__date__ = "2011-12-01"10__all__ = ()11# =============================================================================12from ostap.math.base import Ostap, doubles 13from ostap.math.reduce import root_factory14from ostap.core.ostap_types import sequence_types 15import ROOT, array 16# =============================================================================17# logging 18# =============================================================================19from ostap.logger.logger import getLogger 20if '__main__' == __name__ : logger = getLogger ( 'ostap.math.more_reduce' )21else : logger = getLogger ( __name__ )22# =============================================================================23# =============================================================================24## BreitWigner and friends25# =============================================================================26# =============================================================================27## Reduce Ostap::Math::FormFactors::Jackson28# @see Ostap::Math::FormFactors::Jackson29def _omffj_reduce_ ( ff ) :30 """Reduce `Ostap.Math.FormFactors.Jackson`31 - see `Ostap.Math.FormFactors.Jackson`32 """33 return root_factory , ( type ( ff ) , ff.rho() )34Ostap.Math.FormFactors.Jackson . __reduce__ = _omffj_reduce_35# =============================================================================36## Reduce Ostap::Math::FormFactors::BlattWeisskopf37# @see Ostap::Math::FormFactors::BlattWeiskopf38def _omffbw_reduce_ ( ff ) :39 """Reduce `Ostap.Math.FormFactors.BlattWeiskopf`40 - see `Ostap.Math.FormFactors.BlattWeiskopf`41 """42 return root_factory , ( type ( ff ) , ff.L() , ff.breakup () )43Ostap.Math.FormFactors.BlattWeisskopf . __reduce__ = _omffbw_reduce_44# =============================================================================45## Reduce Ostap::Math::FormFactors::NoFormFactor46# @see Ostap::Math::FormFactors::NoFormFactor47def _omffnf_reduce_ ( ff ) :48 """Reduce `Ostap.Math.FormFactors.NoFormFactor`49 - see `Ostap.Math.FormFactors.NoFormFactor`50 """51 return root_factory , ( type ( ff ) , )52Ostap.Math.FormFactors.NoFormFactor. __reduce__ = _omffnf_reduce_53# =============================================================================54## Reduce Ostap::Math::ChannelCW55# @see Ostap::Math::ChannelCW56def _omccw_reduce_ ( ch ) :57 """Reduce `Ostap.Math.ChannelCW`58 - see `Ostap.Math.ChannelCW`59 """60 return root_factory , ( type ( ch ) , ch.gamma0() , ch.m1() , ch.m2() )61Ostap.Math.ChannelCW . __reduce__ = _omccw_reduce_62Ostap.Math.ChannelQ . __reduce__ = _omccw_reduce_63Ostap.Math.ChannelFlatte . __reduce__ = _omccw_reduce_64# =============================================================================65## Reduce Ostap::Math::ChannelFlatteBugg66# @see Ostap::Math::ChannelFlatteBugg67def _omcfb_reduce_ ( ch ) :68 """Reduce `Ostap.Math.ChannelFlatteBugg`69 - see `Ostap.Math.ChannelFlatteBugg`70 """71 return root_factory , ( type ( ch ) ,72 ch.gamma0 () ,73 ch.mcharged () ,74 ch.mneutral () , 75 ch.alpha () ,76 ch.fc () , 77 ch.fn () )78Ostap.Math.ChannelFlatteBugg . __reduce__ = _omcfb_reduce_79# =============================================================================80## Reduce Ostap::Math::Channel81# @see Ostap::Math::Channel82def _omc_reduce_ ( ch ) :83 """Reduce `Ostap.Math.Channel`84 - see `Ostap.Math.Channel`85 """86 return root_factory , ( type ( ch ) , ch.gamma0() , ch.m1() , ch.m2() , ch.L() , ch.formfactor () )87Ostap.Math.Channel. __reduce__ = _omc_reduce_88# =============================================================================89## Reduce Ostap::Math::Channel090# @see Ostap::Math::Channel091def _omc0_reduce_ ( ch ) :92 """Reduce `Ostap.Math.Channel0`93 - see `Ostap.Math.Channel0`94 """95 return root_factory , ( type ( ch ) , ch.gamma0() , ch.m1() , ch.m2() , ch.L() , ch.formfactor () , ch.qs () )96Ostap.Math.Channel0. __reduce__ = _omc0_reduce_97# =============================================================================98## reduce Ostap::Math::Channel23L99# @see Ostap::Math::Channel23L100def _omc23l_reduce_ ( ch ) : 101 """Reduce `Ostap.Math.Channel23L`102 - see `Ostap.Math.Channel23L`103 """104 return root_factory , ( type ( ch ) , ch.channel() , ch.ps23L () ) 105 106Ostap.Math.Channel23L. __reduce__ = _omc23l_reduce_107# =============================================================================108## reduce Ostap::Math::ChanneNR3109# @see Ostap::Math::ChannelNR3110def _omcnr3_reduce_ ( ch ) : 111 """Reduce `Ostap.Math.ChannelNR3`112 - see `Ostap.Math.ChannelNR3`113 """114 return root_factory , ( type ( ch ) , ch.m1() , ch.m2() , ch.m3() )115 116Ostap.Math.ChannelNR3. __reduce__ = _omcnr3_reduce_117# =============================================================================118## reduce Ostap::Math::ChanneGS119# @see Ostap::Math::ChannelGS120def _omcgs_reduce_ ( ch ) : 121 """Reduce `Ostap.Math.ChannelGS`122 - see `Ostap.Math.ChannelGS`123 """124 return root_factory , ( type ( ch ) , ch.gamma0() , ch.mpi() )125 126Ostap.Math.ChannelGS. __reduce__ = _omcgs_reduce_127# =============================================================================128## Reduce Ostap::Math::BW129# @see Ostap::Math::BW130def _ombw_reduce_ ( bw ) :131 """Reduce `Ostap.Math.BW`132 - see `Ostap.Math.BW`133 """134 return root_factory , ( type ( bw ) , bw.m0() , bw.channel() )135Ostap.Math.BW . __reduce__ = _ombw_reduce_136Ostap.Math.BreitWigner. __reduce__ = _ombw_reduce_137# =============================================================================138## Reduce Ostap::Math::Rho0139# @see Ostap::Math::Rho0140def _omr0_reduce_ ( bw ) :141 """Reduce `Ostap.Math.Rho0`142 - see `Ostap.Math.Rho0`143 """144 return root_factory , ( type ( bw ) , bw.m0() , bw.gamma ( 0 ) , bw.m1() ) 145# =============================================================================146## Reduce Ostap::Math::Kstar0147# @see Ostap::Math::Kstar0148def _omks0_reduce_ ( bw ) :149 """Reduce `Ostap.Math.Kstar0`150 - see `Ostap.Math.Kstar0`151 """152 return root_factory , ( type ( bw ) , bw.m0() , bw.gamma ( 0 ) , bw.m1() , bw.m2() ) 153Ostap.Math.Rho0 . __reduce__ = _omr0_reduce_154Ostap.Math.Phi0 . __reduce__ = _omr0_reduce_155Ostap.Math.Kstar0 . __reduce__ = _omks0_reduce_156## ============================================================================157## factory for Ostap::Math::BreintWignerMC158# @see Ostap::Math::BreintWignerMC159def _ombwmc_factory ( klass , m0 , channel , *channels ) :160 """Factory for Ostap::Math::BreintWignerMC161 - see Ostap::Math::BreintWignerMC162 """163 bwmc = klass ( m0 , channel )164 for c in channels : bwmc.addChannel ( c )165 return bwmc 166# =============================================================================167## Reduce Ostap::Math::BreitWignerMC 168# @see Ostap::Math::BreintWignerMC 169def _ombwmc_reduce_ ( bw ) :170 """Reduce `Ostap.Math.BreitWignerMC`171 - see `Ostap.Math.BreitWignerMC`172 """173 content = type ( bw ) , bw.m0()174 content += tuple ( bw.channel ( i ) for i in range ( bw.nChannels() ) )175 return _ombwmc_factory , content 176 177Ostap.Math.BreitWignerMC. __reduce__ = _ombwmc_reduce_178# =============================================================================179## Reduce Ostap::Math::Flatte180# @see Ostap::Math::Flatte181def _omflt_reduce_ ( bw ) :182 """Reduce `Ostap.Math.Flatte`183 - see `Ostap.Math.Flatte`184 """185 return root_factory , ( type ( bw ) , bw.m0() ,186 bw.m0g1() , bw.g2og1() ,187 bw.mA1 () , bw.mA2() , 188 bw.mB1 () , bw.mB2() , bw.g0 () ) 189 190Ostap.Math.Flatte. __reduce__ = _omflt_reduce_191# =============================================================================192## Reduce Ostap::Math::FlatteBugg193# @see Ostap::Math::FlatteBugg194def _omfltb_reduce_ ( bw ) :195 """Reduce `Ostap.Math.FlatteBugg`196 - see `Ostap.Math.FlatteBugg`197 """198 return root_factory , ( type ( bw ) ,199 bw.m0 () ,200 bw.g1 () ,201 bw.g2og1 () ,202 bw.alpha () ,203 bw.mpiplus () ,204 bw.mpizero () ,205 bw.mKplus () ,206 bw.mKzero () ,207 bw.g0 () )208Ostap.Math.FlatteBugg. __reduce__ = _omfltb_reduce_209# =============================================================================210## Reduce Ostap::Math::LASS211# @see Ostap::Math::LASS212def _omlass_reduce_ ( bw ) :213 """Reduce `Ostap.Math.LASS`214 - see `Ostap.Math.LASS`215 """216 return root_factory , ( type ( bw ) , bw.m0() , bw.gamma() ,217 bw.m1() , bw.m2() , bw.m3() ,218 bw.a () , bw.b () , bw.e () ) 219 220Ostap.Math.LASS. __reduce__ = _omlass_reduce_221# =============================================================================222## Reduce Ostap::Math::BWPS223# @see Ostap::Math::BWPS224def _ombwps_reduce_ ( bw ) :225 """Reduce `Ostap.Math.BWPS`226 - see `Ostap.Math.BWPS`227 """228 return root_factory , ( type ( bw ) ,229 bw.breit_wigner() ,230 bw.phase_space () ,231 bw.use_rho () ,232 bw.use_N2 () )233 234Ostap.Math.BWPS. __reduce__ = _ombwps_reduce_235# =============================================================================236## Reduce Ostap::Math::BW3L237# @see Ostap::Math::BW3L238def _ombw3l_reduce_ ( bw ) :239 """Reduce `Ostap.Math.BW3L`240 - see `Ostap.Math.BW3L`241 """242 return root_factory , ( type ( bw ) ,243 bw.breit_wigner() ,244 bw.M() , bw.m1() , bw.m2() , bw.m3() , bw.L() )245 246Ostap.Math.BW3L. __reduce__ = _ombw3l_reduce_247# =============================================================================248## Reduce Ostap::Math::A2249# @see Ostap::Math::A2250def _oma2_reduce_ ( bw ) :251 """Reduce `Ostap.Math.A2`252 - see `Ostap.Math.A2`253 """254 return root_factory , ( type ( bw ) , bw.bw() , bw.scale() )255 256Ostap.Math.A2. __reduce__ = _oma2_reduce_257# =============================================================================258## Other peaks259# =============================================================================260# =============================================================================261## Reduce Ostap::Math::BifurcatedGauss 262# @see Ostap::Math::BifurcatedGauss263def _ombfg_reduce_ ( peak ) :264 """Reduce `Ostap.Math.BifurcatedGauss`265 - see `Ostap.Math.BifurcatedGauss`266 """267 return root_factory , ( type ( peak ) , peak.m0 () , peak.sigmaL() , peak.sigmaR() )268Ostap.Math.BifurcatedGauss. __reduce__ = _ombfg_reduce_269# =============================================================================270## Reduce Ostap::Math::DoubleGauss 271# @see Ostap::Math::DoubleGauss272def _om2g_reduce_ ( peak ) :273 """Reduce `Ostap.Math.DoubleGauss`274 - see `Ostap.Math.GoubleGauss`275 """276 return root_factory , ( type ( peak ) ,277 peak.m0 () , peak.sigma() ,278 peak.fraction () , peak.scale() ) 279Ostap.Math.DoubleGauss. __reduce__ = _om2g_reduce_280# =============================================================================281## Reduce Ostap::Math::Gauss 282# @see Ostap::Math::Gauss283def _omg_reduce_ ( peak ) :284 """Reduce `Ostap.Math.Gauss`285 - see `Ostap.Math.Gauss`286 """287 return root_factory , ( type ( peak ) , peak.m0 () , peak.sigma() )288Ostap.Math.Gauss. __reduce__ = _omg_reduce_289# =============================================================================290## Reduce Ostap::Math::GenGaussV1291# @see Ostap::Math::GenGaussV1292def _omggv1_reduce_ ( peak ) :293 """Reduce `Ostap.Math.GenGaussV1`294 - see `Ostap.Math.GenGaussV1`295 """296 return root_factory , ( type ( peak ) , peak.mu() , peak.alpha() , peak.beta() )297Ostap.Math.GenGaussV1. __reduce__ = _omggv1_reduce_298# =============================================================================299## Reduce Ostap::Math::GenGaussV2300# @see Ostap::Math::GenGaussV2301def _omggv2_reduce_ ( peak ) :302 """Reduce `Ostap.Math.GenGaussV2`303 - see `Ostap.Math.GenGaussV2`304 """305 return root_factory , ( type ( peak ) , peak.xi() , peak.alpha() , peak.kappa() )306Ostap.Math.GenGaussV2. __reduce__ = _omggv2_reduce_307# =============================================================================308## Reduce Ostap::Math::SkewGauss309# @see Ostap::Math::SkewGauss310def _omskg_reduce_ ( peak ) :311 """Reduce `Ostap.Math.SkewGauss`312 - see `Ostap.Math.SkewGauss`313 """314 return root_factory , ( type ( peak ) , peak.xi() , peak.omega() , peak.alpha() )315Ostap.Math.SkewGauss. __reduce__ = _omskg_reduce_316# =============================================================================317## Reduce Ostap::Math::ExGauss318# @see Ostap::Math::ExGauss319def _omexg_reduce_ ( peak ) :320 """Reduce `Ostap.Math.ExGauss`321 - see `Ostap.Math.ExGauss`322 """323 return root_factory , ( type ( peak ) , peak.mu() , peak.varsigma() , peak.k () )324Ostap.Math.ExGauss. __reduce__ = _omexg_reduce_325# =============================================================================326## Reduce Ostap::Math::NormalLaplace327# @see Ostap::Math::NormalLaplace328def _omnl_reduce_ ( peak ) :329 """Reduce `Ostap.Math.NormalLaplace`330 - see `Ostap.Math.NormalLaplace`331 """332 return root_factory , ( type ( peak ) , peak.mu() , peak.varsigma() , peak.kL() , peak.kR () )333Ostap.Math.NormalLaplace. __reduce__ = _omnl_reduce_334# =============================================================================335## Reduce Ostap::Math::Bukin336# @see Ostap::Math::Nukin337def _ombu_reduce_ ( peak ) :338 """Reduce `Ostap.Math.Bukin`339 - see `Ostap.Math.Bukin`340 """341 return root_factory , ( type ( peak ) , peak.m0() , peak.sigma() ,342 peak.xi() , peak.rho_L() , peak.rho_R () )343Ostap.Math.Bukin. __reduce__ = _ombu_reduce_344# =============================================================================345## Reduce Ostap::Math::Novosibirsk346# @see Ostap::Math::BNovosibirsk347def _omnovo_reduce_ ( peak ) :348 """Reduce `Ostap.Math.Novosibirsk`349 - see `Ostap.Math.Novosibirsk`350 """351 return root_factory , ( type ( peak ) , peak.m0() , peak.sigma() , peak.tau() ) 352Ostap.Math.Novosibirsk. __reduce__ = _omnovo_reduce_353# =============================================================================354## Reduce Ostap::Math::CrystalBall355# @see Ostap::Math::CristalBall356def _omcb_reduce_ ( peak ) :357 """Reduce `Ostap.Math.CrystalBall`358 - see `Ostap.Math.CrystalBall`359 """360 return root_factory , ( type ( peak ) , peak.m0() , peak.sigma() , peak.alpha() , peak.n() )361Ostap.Math.CrystalBall . __reduce__ = _omcb_reduce_362Ostap.Math.CrystalBallRightSide. __reduce__ = _omcb_reduce_363# =============================================================================364## Reduce Ostap::Math::Needham365# @see Ostap::Math::Needham366def _ommatt_reduce_ ( peak ) :367 """Reduce `Ostap.Math.Needham`368 - see `Ostap.Math.Needham`369 """370 return root_factory , ( type ( peak ) , peak.m0 () , peak.sigma() ,371 peka.a0 () , peak.a1 () , peak.a2 () ) 372Ostap.Math.Needham . __reduce__ = _ommatt_reduce_373# =============================================================================374## Reduce Ostap::Math::CrystalBallDoubleSided375# @see Ostap::Math::CristalBallDoubleSided 376def _omcb2_reduce_ ( peak ) :377 """Reduce `Ostap.Math.CrystalBallDoubleSided`378 - see `Ostap.Math.CrystalBallDoubleSided`379 """380 return root_factory , ( type ( peak ) , peak.m0() , peak.sigma() ,381 peak.alpha_L() , peak.n_L() ,382 peak.alpha_R() , peak.n_R() )383 384Ostap.Math.CrystalBallDoubleSided. __reduce__ = _omcb2_reduce_385# =============================================================================386## Reduce Ostap::Math::Apollonios387# @see Ostap::Math::Apollonios388def _omapo_reduce_ ( peak ) :389 """Reduce `Ostap.Math.Apollonios`390 - see `Ostap.Math.Apollonios`391 """392 return root_factory , ( type ( peak ) , peak.m0() , peak.sigma() ,393 peak.alpha () , peak.n () , peak.b () )394 395Ostap.Math.Apollonios. __reduce__ = _omapo_reduce_396# =============================================================================397## Reduce Ostap::Math::Apollonios2398# @see Ostap::Math::Apollonios2399def _omapo2_reduce_ ( peak ) :400 """Reduce `Ostap.Math.Apollonios2`401 - see `Ostap.Math.Apollonios2`402 """403 return root_factory , ( type ( peak ) , peak.m0() ,404 peak.sigmaL() , peak.sigmaR() , peak.beta () )405 406Ostap.Math.Apollonios2. __reduce__ = _omapo2_reduce_407# =============================================================================408## Reduce Ostap::Math::StudentT409# @see Ostap::Math::StudentT410def _omstt_reduce_ ( peak ) :411 """Reduce `Ostap.Math.StudentT`412 - see `Ostap.Math.StudentT`413 """414 return root_factory , ( type ( peak ) , peak.m0() , peak.sigma () , peak.n () )415 416Ostap.Math.StudentT. __reduce__ = _omstt_reduce_417# =============================================================================418## Reduce Ostap::Math::BifurcatedStudentT419# @see Ostap::Math::BifurcatedStudentT420def _ombfstt_reduce_ ( peak ) :421 """Reduce `Ostap.Math.BifurcatedStudentT`422 - see `Ostap.Math.BifurcatedStudentT`423 """424 return root_factory , ( type ( peak ) , peak.m0 () ,425 peak.sigmaL () ,peak.sigmaR () ,426 peak.nL () , peak.nR () )427Ostap.Math.BifurcatedStudentT. __reduce__ = _ombfstt_reduce_428# =============================================================================429## Reduce Ostap::Math::PearsonIV430# @see Ostap::Math::PearsonIV431def _omp4_reduce_ ( peak ) :432 """Reduce `Ostap.Math.PearsonIV`433 - see `Ostap.Math.PearsonIV`434 """435 return root_factory , ( type ( peak ) , peak.mu () ,436 peak.varsigma () , peak.n () , peak.kappa () )437Ostap.Math.PearsonIV. __reduce__ = _omp4_reduce_438# =============================================================================439## Reduce Ostap::Math::SinhAsinh440# @see Ostap::Math::SinhAsinh441def _omshash_reduce_ ( peak ) :442 """Reduce `Ostap.Math.SinhAsinh`443 - see `Ostap.Math.SinhAsinh`444 """445 return root_factory , ( type ( peak ) , peak.location () ,446 peak.scale () , peak.epsilon () , peak.delta () )447Ostap.Math.SinhAsinh. __reduce__ = _omshash_reduce_448# =============================================================================449## Reduce Ostap::Math::JohnsonSU450# @see Ostap::Math::JohnsonSU451def _omjsu_reduce_ ( peak ) :452 """Reduce `Ostap.Math.JohnsonSU`453 - see `Ostap.Math.JohnsonSU`454 """455 return root_factory , ( type ( peak ) , peak.xi () ,456 peak.lambd () , peak.delta () , peak.gamma () )457Ostap.Math.JohnsonSU. __reduce__ = _omjsu_reduce_458# =============================================================================459## Reduce Ostap::Math::Atlas460# @see Ostap::Math::Atlas461def _omatlas_reduce_ ( peak ) :462 """Reduce `Ostap.Math.Atlas`463 - see `Ostap.Math.Atlas`464 """465 return root_factory , ( type ( peak ) , peak.mean () , peak.sigma () )466Ostap.Math.Atlas . __reduce__ = _omatlas_reduce_467Ostap.Math.Sech . __reduce__ = _omatlas_reduce_468Ostap.Math.Logistic. __reduce__ = _omatlas_reduce_469# =============================================================================470## Reduce Ostap::Math::Losev471# @see Ostap::Math::Losev472def _omlosev_reduce_ ( peak ) :473 """Reduce `Ostap.Math.Losev`474 - see `Ostap.Math.Losev`475 """476 return root_factory , ( type ( peak ) , peak.mu () , peak.alpha () , peka.beta () )477Ostap.Math.Losev . __reduce__ = _omlosev_reduce_478# =============================================================================479## Reduce Ostap::Math::Slash480# @see Ostap::Math::Slash481def _omslash_reduce_ ( peak ) :482 """Reduce `Ostap.Math.Slash`483 - see `Ostap.Math.Slash`484 """485 return root_factory , ( type ( peak ) , peak.mean () , peak.scale () )486Ostap.Math.Slash . __reduce__ = _omslash_reduce_487# =============================================================================488## Reduce Ostap::Math::AsymmetricLaplace489# @see Ostap::Math::AsymmetricLaplace490def _omal_reduce_ ( peak ) :491 """Reduce `Ostap.Math.AsymmetricLaplace`492 - see `Ostap.Math.AsymmetricLaplace`493 """494 return root_factory , ( type ( peak ) , peak.mu () , peak.lambdaL () , peak.lambdaR() )495Ostap.Math.AsymmetricLaplace. __reduce__ = _omal_reduce_496# =============================================================================497## Reduce Ostap::Math::RaisngCosine 498# @see Ostap::Math::RaisingCosine499def _omrcos_reduce_ ( peak ) :500 """Reduce `Ostap.Math.RaisingCosine`501 - see `Ostap.Math.RaisingCosine`502 """503 return root_factory , ( type ( peak ) , peak.mu () , peak.s () )504Ostap.Math.RaisingCosine. __reduce__ = _omrcos_reduce_505# =============================================================================506## Reduce Ostap::Math::QGaussian507# @see Ostap::Math::QGaussian508def _omqg_reduce_ ( peak ) :509 """Reduce `Ostap.Math.QGaussian`510 - see `Ostap.Math.QGaussian`511 """512 return root_factory , ( type ( peak ) , peak.mean () , peak.q () , peak.scale () )513Ostap.Math.QGaussian. __reduce__ = _omqg_reduce_514# =============================================================================515## Reduce Ostap::Math::Hyperbolic516# @see Ostap::Math::Hyperbolic517def _omhyp_reduce_ ( peak ) :518 """Reduce `Ostap.Math.Hyperbolic`519 - see `Ostap.Math.Hyperbolic`520 """521 return root_factory , ( type ( peak ) , peak.mu () ,522 peak.sigma() , peak.zeta () , peak.kappa () )523Ostap.Math.Hyperbolic. __reduce__ = _omhyp_reduce_524# =============================================================================525## Reduce Ostap::Math::GenHyperbolic526# @see Ostap::Math::GenHyperbolic527def _omghyp_reduce_ ( peak ) :528 """Reduce `Ostap.Math.GenHyperbolic`529 - see `Ostap.Math.GenHyperbolic`530 """531 return root_factory , ( type ( peak ) , peak.mu () ,532 peak.sigma() , peak.zeta () , peak.kappa () , peka.lambd () )533Ostap.Math.GenHyperbolic. __reduce__ = _omghyp_reduce_534# =============================================================================535## Reduce Ostap::Math::Das536# @see Ostap::Math::Das537def _omdas_reduce_ ( peak ) :538 """Reduce `Ostap.Math.Das`539 - see `Ostap.Math.Das`540 """541 return root_factory , ( type ( peak ) , peak.mu () ,542 peak.sigma() , peak.kL () , peak.kR () )543Ostap.Math.Das. __reduce__ = _omdas_reduce_544# =============================================================================545## Reduce Ostap::Math::Hat546# @see Ostap::Math::Hat547def _omhat_reduce_ ( peak ) :548 """Reduce `Ostap.Math.Hat`549 - see `Ostap.Math.Hat`550 """551 return root_factory , ( type ( peak ) , peak.mu () , peak.varsigma() )552Ostap.Math.Hat. __reduce__ = _omhat_reduce_553Ostap.Math.Up. __reduce__ = _omhat_reduce_554# =============================================================================555## Reduce Ostap::Math::FupN556# @see Ostap::Math::FupN557def _omfup_reduce_ ( peak ) :558 """Reduce `Ostap.Math.FupN`559 - see `Ostap.Math.FupN`560 """561 return root_factory , ( type ( peak ) , peak.N() , peak.mu () , peak.varsigma() )562Ostap.Math.FupN. __reduce__ = _omfup_reduce_563# =============================================================================564## Mdoels 565# =============================================================================566# =============================================================================567## Reduce Ostap::Math::Gumbel568# @see Ostap::Math::Gumbel569def _omgum_reduce_ ( s ) :570 """Reduce `Ostap.Math.Gumbel`571 - see `Ostap.Math.Gumbel`572 """573 return root_factory , ( type ( s ) , s.mu () , s.beta () ) 574Ostap.Math.Gumbel . __reduce__ = _omgum_reduce_575# =============================================================================576## Reduce Ostap::Math::GramCahrlierA577# @see Ostap::Math::GramCharlierA578def _omgca_reduce_ ( s ) :579 """Reduce `Ostap.Math.GramCharlierA`580 - see `Ostap.Math.GramCharlierA`581 """582 return root_factory , ( type ( s ) , s.m0 () , s.sigma() , s.kappa3() , s.kappa4() ) 583Ostap.Math.GramCharlierA. __reduce__ = _omgca_reduce_584# =============================================================================585## Reduce Ostap::Math::PhaseSpacePol586# @see Ostap::Math::PhaseSpacePol587def _ompspol_reduce_ ( s ) :588 """Reduce `Ostap.Math.PhaseSpacePol`589 - see `Ostap.Math.PhaseSpacePol`590 """591 return root_factory , ( type ( s ) , s.phasespace() , s.positive() ) 592Ostap.Math.PhaseSpacePol. __reduce__ = _ompspol_reduce_593# =============================================================================594## Reduce Ostap::Math::PhaseSpaceLeftExpoPol595# @see Ostap::Math::PhaseSpacePol596def _ompslexp_reduce_ ( s ) :597 """Reduce `Ostap.Math.PhaseSpaceLeftExpoPol`598 - see `Ostap.Math.PhaseSpaceLeftExpoPol`599 """600 return root_factory , ( type ( s ) , s.phasespace() , s.positive() . s.tau () ) 601Ostap.Math.PhaseSpaceLeftExpoPol. __reduce__ = _ompslexp_reduce_602# =============================================================================603## Reduce Ostap::Math::GammaDist604# @see Ostap::Math::GammaDist605def _omgdis_reduce_ ( s ) :606 """Reduce `Ostap.Math.GammaDist`607 - see `Ostap.Math.GammaDist`608 """609 return root_factory , ( type ( s ) , s.k() , s.theta() ) 610Ostap.Math.GammaDist . __reduce__ = _omgdis_reduce_611Ostap.Math.LogGammaDist . __reduce__ = _omgdis_reduce_612Ostap.Math.Log10GammaDist. __reduce__ = _omgdis_reduce_613# =============================================================================614## Reduce Ostap::Math::GenGammaDist615# @see Ostap::Math::GenGammaDist616def _omggdis_reduce_ ( s ) :617 """Reduce `Ostap.Math.GenGammaDist`618 - see `Ostap.Math.GenGammaDist`619 """620 return root_factory , ( type ( s ) , s.k() , s.theta() , s.p() , s.low() ) 621Ostap.Math.GenGammaDist . __reduce__ = _omggdis_reduce_622# =============================================================================623## Reduce Ostap::Math::LogGamma624# @see Ostap::Math::LogGamma625def _omlgam_reduce_ ( s ) :626 """Reduce `Ostap.Math.LogGamma`627 - see `Ostap.Math.LogGamma`628 """629 return root_factory , ( type ( s ) , s.nu () , s.lambd () , s.alpha () ) 630Ostap.Math.LogGamma . __reduce__ = _omlgam_reduce_631# =============================================================================632## Reduce Ostap::Math::BetaPrime633# @see Ostap::Math::BetaPrime634def _ombprim_reduce_ ( s ) :635 """Reduce `Ostap.Math.BetaPrime`636 - see `Ostap.Math.BetaPrime`637 """638 return root_factory , ( type ( s ) , s.alpha () , s.beta() , s.scale() , s.shift () )639Ostap.Math.BetaPrime. __reduce__ = _ombprim_reduce_640# =============================================================================641## Reduce Ostap::Math::Landau642# @see Ostap::Math::Landau643def _omland_reduce_ ( s ) :644 """Reduce `Ostap.Math.Landau`645 - see `Ostap.Math.Landau`646 """647 return root_factory , ( type ( s ) , s.scale() , s.shift () )648Ostap.Math.Landau. __reduce__ = _omland_reduce_649# =============================================================================650## Reduce Ostap::Math::Weibull651# @see Ostap::Math::Weibull652def _omwb_reduce_ ( s ) :653 """Reduce `Ostap.Math.Weibull`654 - see `Ostap.Math.Weibull`655 """656 return root_factory , ( type ( s ) , s.scale() , s.shape () , s.shift () )657Ostap.Math.Weibull. __reduce__ = _omwb_reduce_658# =============================================================================659## Reduce Ostap::Math::ExpoPosition660# @see Ostap::Math::ExpoPositive661def _omepos_reduce_ ( s ) :662 """Reduce `Ostap.Math.ExpoPositive`663 - see `Ostap.Math.ExpoPositive`664 """665 return root_factory , ( type ( s ) , s.positive () , s.tau() )666Ostap.Math.ExpoPositive. __reduce__ = _omepos_reduce_667# =============================================================================668## Reduce Ostap::Math::Sigmoid669# @see Ostap::Math::Sigmoid670def _omsigm_reduce_ ( s ) :671 """Reduce `Ostap.Math.Sigmoid`672 - see `Ostap.Math.Sigmoid`673 """674 return root_factory , ( type ( s ) , s.positive () , s.alpha() , s.x0() )675Ostap.Math.Sigmoid. __reduce__ = _omsigm_reduce_676# =============================================================================677## Reduce Ostap::Math::TwoExpos678# @see Ostap::Math::TwoExpos679def _om2exp_reduce_ ( s ) :680 """Reduce `Ostap.Math.TwoExpos`681 - see `Ostap.Math.TwoExpos`682 """683 return root_factory , ( type ( s ) , s.alpha() , s.delta() , s.x0 () )684Ostap.Math.TwoExpos. __reduce__ = _om2exp_reduce_685# =============================================================================686## Reduce Ostap::Math::TwoExpos687# @see Ostap::Math::TwoExpos688def _om2exp_reduce_ ( s ) :689 """Reduce `Ostap.Math.TwoExpos`690 - see `Ostap.Math.TwoExpos`691 """692 return root_factory , ( type ( s ) , s.alpha() , s.delta() , s.x0 () )693Ostap.Math.TwoExpos. __reduce__ = _om2exp_reduce_694# =============================================================================695## Reduce Ostap::Math::TwoExpoPositive696# @see Ostap::Math::TwoExpoPositive697def _om2exppos_reduce_ ( s ) :698 """Reduce `Ostap.Math.TwoExpoPositive`699 - see `Ostap.Math.TwoExpoPositive`700 """701 return root_factory , ( type ( s ) , s.twoexpos() , s.positive() )702Ostap.Math.TwoExpoPositive. __reduce__ = _om2exppos_reduce_703# =============================================================================704## Reduce Ostap::Math::Rice705# @see Ostap::Math::Rice706def _omrice_reduce_ ( s ) :707 """Reduce `Ostap.Math.Rice`708 - see `Ostap.Math.Rice`709 """710 return root_factory , ( type ( s ) , s.nu() , s.varsigma() , s.shift () )711Ostap.Math.Rice. __reduce__ = _omrice_reduce_712# =============================================================================713## Reduce Ostap::Math::GenInvGauss714# @see Ostap::Math::GenInvGauss715def _omgig_reduce_ ( s ) :716 """Reduce `Ostap.Math.GenInvGauss`717 - see `Ostap.Math.GenInvGauss`718 """719 return root_factory , ( type ( s ) , s.theta() , s.eta() , s.p() , s.shift() )720Ostap.Math.GenInvGauss. __reduce__ = _omgig_reduce_721# =============================================================================722## Reduce Ostap::Math::Argus723# @see Ostap::Math::Argus724def _omargus_reduce_ ( s ) :725 """Reduce `Ostap.Math.Argus`726 - see `Ostap.Math.Argus`727 """728 return root_factory , ( type ( s ) , s.mu() , s.c() , s.chi () )729Ostap.Math.Argus. __reduce__ = _omargus_reduce_730# =============================================================================731## Reduce Ostap::Math::GenArgus732# @see Ostap::Math::GenArgus733def _omgargus_reduce_ ( s ) :734 """Reduce `Ostap.Math.GenArgus`735 - see `Ostap.Math.GenArgus`736 """737 return root_factory , ( type ( s ) , s.mu() , s.c() , s.chi () , s.dp () )738Ostap.Math.GenArgus. __reduce__ = _omgargus_reduce_739# =============================================================================740## Reduce Ostap::Math::Tsallis741# @see Ostap::Math::Tsalllis742def _omts_reduce_ ( s ) :743 """Reduce `Ostap.Math.Tsallis`744 - see `Ostap.Math.Tsallis`745 """746 return root_factory , ( type ( s ) , s.mass () , s.n () , s.T () )747Ostap.Math.Tsallis. __reduce__ = _omts_reduce_748# =============================================================================749## Reduce Ostap::Math::QGSM750# @see Ostap::Math::QGSM751def _omqgsm_reduce_ ( s ) :752 """Reduce `Ostap.Math.QGSM`753 - see `Ostap.Math.QGSM`754 """755 return root_factory , ( type ( s ) , s.mass () , s.b () )756Ostap.Math.QGSM. __reduce__ = _omqgsm_reduce_757# =============================================================================758## Reduce Ostap::Math::HORNSdini759# @see Ostap::Math::HORNSdini760def _omdini_reduce_ ( s ) :761 """Reduce `Ostap.Math.HORNSdini`762 - see `Ostap.Math.HORNSdini`763 """764 return root_factory , ( type ( s ) , s.a() , s.delta() , s.phi () )765Ostap.Math.HORNSdini. __reduce__ = _omdini_reduce_766Ostap.Math.HILLdini . __reduce__ = _omdini_reduce_767# =============================================================================768## Reduce Ostap::Math::CutOffGauss769# @see Ostap::Math::CutOffGauss770def _omcgau_reduce_ ( s ) :771 """Reduce `Ostap.Math.CutOffGauss`772 - see `Ostap.Math.CutOffGauss`773 """774 return root_factory , ( type ( s ) , s.right () , s.x0 () , s.sigma() )775Ostap.Math.CutOffGauss. __reduce__ = _omcgau_reduce_776# =============================================================================777## Reduce Ostap::Math::CutOffStudent778# @see Ostap::Math::CutOffStudent779def _omcstt_reduce_ ( s ) :780 """Reduce `Ostap.Math.CutOffStudent`781 - see `Ostap.Math.CutOffStudent`782 """783 return root_factory , ( type ( s ) , s.right () , s.x0 () , s.n() , s.sigma() )784Ostap.Math.CutOffStudent. __reduce__ = _omcstt_reduce_785# =============================================================================786# Models2 787# =============================================================================788# =============================================================================789## Reduce Ostap::Math::PS2DPol790# @see Ostap::Math::PS2DPol791def _omps2dpol_reduce_ ( s ) :792 """Reduce `Ostap.Math.PS2DPol`793 - see `Ostap.Math.PS2DPol`794 """795 return root_factory , ( type ( s ) , s.positive() , s.psx() , s.psy () )796Ostap.Math.PS2DPol. __reduce__ = _omps2dpol_reduce_797# =============================================================================798## Reduce Ostap::Math::PS2DPolSym799# @see Ostap::Math::PS2DPolSym800def _omps2dpols_reduce_ ( s ) :801 """Reduce `Ostap.Math.PS2DPolSym`802 - see `Ostap.Math.PS2DPolSym`803 """804 return root_factory , ( type ( s ) , s.positive() , s.psx() )805Ostap.Math.PS2DPolSym. __reduce__ = _omps2dpols_reduce_806# =============================================================================807## Reduce Ostap::Math::PS2DPol2808# @see Ostap::Math::PS2DPol2809def _omps2dpol2_reduce_ ( s ) :810 """Reduce `Ostap.Math.PS2DPol2`811 - see `Ostap.Math.PS2DPol2`812 """813 return root_factory , ( type ( s ) , s.positive() , s.psx() , s.psy () , s.mmax() )814Ostap.Math.PS2DPol2. __reduce__ = _omps2dpol2_reduce_815# =============================================================================816## Reduce Ostap::Math::PS2DPol2Sym817# @see Ostap::Math::PS2DPol2Sym818def _omps2dpol2s_reduce_ ( s ) :819 """Reduce `Ostap.Math.PS2DPol2Sym`820 - see `Ostap.Math.PS2DPol2Sym`821 """822 return root_factory , ( type ( s ) , s.positive() , s.psx() , s.mmax () )823Ostap.Math.PS2DPol2Sym. __reduce__ = _omps2dpol2s_reduce_824# =============================================================================825## Reduce Ostap::Math::PS2DPol3826# @see Ostap::Math::PS2DPol3827def _omps2dpol3_reduce_ ( s ) :828 """Reduce `Ostap.Math.PS2DPol3`829 - see `Ostap.Math.PS2DPol3`830 """831 return root_factory , ( type ( s ) , s.psx() , s.psy () , s.mmax() )832Ostap.Math.PS2DPol3. __reduce__ = _omps2dpol3_reduce_833# =============================================================================834## Reduce Ostap::Math::PS2DPol3Sym835# @see Ostap::Math::PS2DPol3Sym836def _omps2dpol3s_reduce_ ( s ) :837 """Reduce `Ostap.Math.PS2DPol3Sym`838 - see `Ostap.Math.PS2DPol3Sym`839 """840 return root_factory , ( type ( s ) , s.psx() , s.mmax () )841Ostap.Math.PS2DPol3Sym. __reduce__ = _omps2dpol3s_reduce_842# =============================================================================843## Reduce Ostap::Math::ExpoPS2DPol844# @see Ostap::Math::ExpoPS2DPol845def _omeps2dpol_reduce_ ( s ) :846 """Reduce `Ostap.Math.ExpoPS2DPol`847 - see `Ostap.Math.ExpoPS2DPol`848 """849 return root_factory , ( type ( s ) , s.positive () , s.psy () , s.tau() )850Ostap.Math.ExpoPS2DPol. __reduce__ = _omeps2dpol_reduce_851# =============================================================================852## Reduce Ostap::Math::Expo2DPol853# @see Ostap::Math::Expo2DPol854def _ome2dpol_reduce_ ( s ) :855 """Reduce `Ostap.Math.Expo2DPol`856 - see `Ostap.Math.Expo2DPol`857 """858 return root_factory , ( type ( s ) , s.positive () , s.tauX () , s.tauY() )859Ostap.Math.Expo2DPol. __reduce__ = _ome2dpol_reduce_860# =============================================================================861## Reduce Ostap::Math::Expo2DPolSym862# @see Ostap::Math::Expo2DPolSym863def _ome2dpols_reduce_ ( s ) :864 """Reduce `Ostap.Math.Expo2DPolSym`865 - see `Ostap.Math.Expo2DPolSym`866 """867 return root_factory , ( type ( s ) , s.positive () , s.tau () )868Ostap.Math.Expo2DPolSym. __reduce__ = _ome2dpols_reduce_869# =============================================================================870## Reduce Ostap::Math::Gauss2D871# @see Ostap::Math::Gauss2D872def _omg2d_reduce_ ( s ) :873 """Reduce `Ostap.Math.Gauss2D`874 - see `Ostap.Math.Gauss2D`875 """876 return root_factory , ( type ( s ) ,877 s.muX () , s.muY () ,878 s.sigmaX() , s.msigmaY() , s.theta () )879Ostap.Math.Gauss2D. __reduce__ = _omg2d_reduce_880# =============================================================================881## Models3 882# =============================================================================883# =============================================================================884## Reduce Ostap::Math::Gauss3D885# @see Ostap::Math::Gauss3D886def _omg3d_reduce_ ( s ) :887 """Reduce `Ostap.Math.Gauss3D`888 - see `Ostap.Math.Gauss3D`889 """890 return root_factory , ( type ( s ) ,891 s.muX () , s.muY () , s.muZ () , 892 s.sigmaX() , s.msigmaY() , s.msigmaZ() ,893 s.phi () , s.theta () , s.psi () )894Ostap.Math.Gauss3D. __reduce__ = _omg3d_reduce_895# =============================================================================896_new_methods_ = [] 897_decorated_classes_ = (898 ## Formfactors 899 Ostap.Math.FormFactors.Jackson ,900 Ostap.Math.FormFactors.BlattWeisskopf ,901 Ostap.Math.FormFactors.NoFormFactor ,902 ## Channels 903 Ostap.Math.ChannelCW , 904 Ostap.Math.ChannelQ ,905 Ostap.Math.ChannelFlatte ,906 Ostap.Math.Channel ,907 Ostap.Math.Channel0 ,908 Ostap.Math.Channel23L ,909 Ostap.Math.ChannelNR3 ,910 Ostap.Math.ChannelGS ,911 ## Breit-Wigners 912 Ostap.Math.BW ,913 Ostap.Math.BreitWigner ,914 Ostap.Math.Rho0 , 915 Ostap.Math.Phi0 ,916 Ostap.Math.Kstar0 ,917 Ostap.Math.BreitWignerMC ,918 Ostap.Math.Flatte ,919 Ostap.Math.LASS ,920 Ostap.Math.BWPS ,921 Ostap.Math.BW3L ,922 Ostap.Math.A2 ,923 ## peaks924 Ostap.Math.BifurcatedGauss , 925 Ostap.Math.DoubleGauss , 926 Ostap.Math.Gauss , 927 Ostap.Math.GenGaussV1 ,928 Ostap.Math.GenGaussV2 , 929 Ostap.Math.SkewGauss , 930 Ostap.Math.ExGauss , 931 Ostap.Math.NormalLaplace , 932 Ostap.Math.Bukin , 933 Ostap.Math.Novosibirsk , 934 Ostap.Math.CrystalBall , 935 Ostap.Math.CrystalBallRightSide , 936 Ostap.Math.Needham , 937 Ostap.Math.CrystalBallDoubleSided , 938 Ostap.Math.Apollonios , 939 Ostap.Math.Apollonios2 , 940 Ostap.Math.StudentT , 941 Ostap.Math.BifurcatedStudentT , 942 Ostap.Math.PearsonIV , 943 Ostap.Math.SinhAsinh , 944 Ostap.Math.JohnsonSU , 945 Ostap.Math.Atlas , 946 Ostap.Math.Sech , 947 Ostap.Math.Logistic , 948 Ostap.Math.Losev , 949 Ostap.Math.Slash , 950 Ostap.Math.AsymmetricLaplace , 951 Ostap.Math.RaisingCosine , 952 Ostap.Math.QGaussian , 953 Ostap.Math.Hyperbolic , 954 Ostap.Math.GenHyperbolic , 955 Ostap.Math.Das , 956 Ostap.Math.Hat , 957 Ostap.Math.Up , 958 Ostap.Math.FupN ,959 ## models960 Ostap.Math.Gumbel , 961 Ostap.Math.GramCharlierA , 962 Ostap.Math.PhaseSpacePol , 963 Ostap.Math.PhaseSpaceLeftExpoPol , 964 Ostap.Math.GammaDist , 965 Ostap.Math.LogGammaDist , 966 Ostap.Math.Log10GammaDist , 967 Ostap.Math.GenGammaDist , 968 Ostap.Math.LogGamma , 969 Ostap.Math.BetaPrime , 970 Ostap.Math.Landau , 971 Ostap.Math.Weibull , 972 Ostap.Math.ExpoPositive , 973 Ostap.Math.Sigmoid , 974 Ostap.Math.TwoExpos , 975 Ostap.Math.TwoExpoPositive , 976 Ostap.Math.Rice , 977 Ostap.Math.GenInvGauss , 978 Ostap.Math.Argus , 979 Ostap.Math.GenArgus , 980 Ostap.Math.Tsallis , 981 Ostap.Math.QGSM , 982 Ostap.Math.HORNSdini , 983 Ostap.Math.HILLdini , 984 Ostap.Math.CutOffGauss , 985 Ostap.Math.CutOffStudent ,986 ## 2D-models987 Ostap.Math.PS2DPol , 988 Ostap.Math.PS2DPolSym , 989 Ostap.Math.PS2DPol2 , 990 Ostap.Math.PS2DPol2Sym , 991 Ostap.Math.PS2DPol3 , 992 Ostap.Math.PS2DPol3Sym , 993 Ostap.Math.ExpoPS2DPol , 994 Ostap.Math.Expo2DPol , 995 Ostap.Math.Expo2DPolSym , 996 Ostap.Math.Gauss2D ,997 ## 3D-models 998 Ostap.Math.Gauss3D , 999)1000for t in _decorated_classes_ :1001 _new_methods_.append ( t.__reduce__ )1002_new_methods_ = tuple ( _new_methods_ ) 1003# =============================================================================1004if '__main__' == __name__ :1005 1006 from ostap.utils.docme import docme1007 docme ( __name__ , logger = logger )1008# =============================================================================1009## The END ...

Full Screen

Full Screen

reduce.py

Source:reduce.py Github

copy

Full Screen

1#!/usr/bin/env python2# -*- coding: utf-8 -*-3# =============================================================================4## @file ostap/math/reduce.py5# Module with some useful utilities for reducing some math objects 6# =============================================================================7__version__ = "$Revision$"8__author__ = "Vanya BELYAEV Ivan.Belyaev@cern.ch"9__date__ = "2011-12-01"10__all__ = (11 'root_factory' , ## a simple factory to generic deseroialisarion12 )13# =============================================================================14from ostap.math.base import Ostap, doubles 15from ostap.core.ostap_types import sequence_types 16import ROOT, array 17# =============================================================================18# logging 19# =============================================================================20from ostap.logger.logger import getLogger 21if '__main__' == __name__ : logger = getLogger ( 'ostap.math.reduce' )22else : logger = getLogger ( __name__ )23# =============================================================================24## Trivial factory for deserialization of generic objects25def root_factory ( klass , *params ) :26 """Trivial factory for deserialization of generic bjects27 """28 return klass ( *params )29# =============================================================================30## Simple (basic) polynomials 31# ============================================================================= 32# =============================================================================33## factory for deserialization of simple polynomians 34# @see Ostap.Math.Chebyshev 35# @see Ostap.Math.ChebyshevU 36# @see Ostap.Math.Hermite 37# @see Ostap.Math.Legendre38# @see Ostap.Math.PLegendre39def pN_factory ( klass , *args ) :40 """Factory for deserialization of simple polynomians41 - see Ostap.Math.Chebyshev 42 - see Ostap.Math.ChebyshevU 43 - see Ostap.Math.Hermite 44 - see Ostap.Math.Legendre 45 - see Ostap.Math.PLegendre 46 """47 return klass ( *args ) 48# =============================================================================49## reduce simple polynomials50# @see Ostap.Math.Chebyshev 51# @see Ostap.Math.ChebyshevU 52# @see Ostap.Math.Hermite 53# @see Ostap.Math.Legendre 54def pN_reduce ( p ) :55 """Reduce simple polynomials56 - see Ostap.Math.Chebyshev 57 - see Ostap.Math.ChebyshevU 58 - see Ostap.Math.Hermite 59 - see Ostap.Math.Legendre 60 """61 return pN_factory , ( type ( p ) , p.degree() ) 62# =============================================================================63## reduce simple polynomials64# @see Ostap.Math.PLegendre 65def pLM_reduce ( p ) :66 """Reduce simple polynomials67 - see Ostap.Math.PLegendre 68 """69 return pN_factory , ( type ( p ) , p.L() , p.M() ) 70for t in ( Ostap.Math.Chebyshev ,71 Ostap.Math.ChebyshevU , 72 Ostap.Math.Hermite , 73 Ostap.Math.Legendre ) :74 75 t.__reduce__ = pN_reduce76for t in ( Ostap.Math.Chebyshev ,77 Ostap.Math.ChebyshevU , 78 Ostap.Math.Hermite , 79 Ostap.Math.Legendre ) :80 81 t.__reduce__ = pN_reduce82 83Ostap.Math.PLegendre.__reduce__ = pLM_reduce 84# =============================================================================85## Regular polynomials 86# ============================================================================= 87# =============================================================================88## factory for deserisalization of polynomials with parameters89# @see Ostap::Math::Polynomial90# @see Ostap::Math::ChebyshevSum91# @see Ostap::Math::LegendreSum92# @see Ostap::Math::HermiteSum93# @see Ostap::Math::Bernstein94# @see Ostap::Math::BernsteinEven95def poly_factory ( klass , params , *args ) :96 """Factory for deserisalization of polynomials with parameters97 - see Ostap.Math.Polynomial98 - see Ostap.Math.ChebyshevSum99 - see Ostap.Math.LegendreSum100 - see Ostap.Math.HermiteSum101 - see Ostap.Math.Bernstein102 - see Ostap.Math.BernsteinEven103 """104 return klass ( doubles ( params ) , *args ) 105# =============================================================================106## Reduce polynomials with parameters107# @see Ostap::Math::Polynomial108# @see Ostap::Math::ChebyshevSum109# @see Ostap::Math::LegendreSum110# @see Ostap::Math::HermiteSum111# @see Ostap::Math::Bernstein112# @see Ostap::Math::BernsteinEven113# @see Ostap::Math::Positive 114def poly_reduce ( p ) : 115 """Reduce polynomials with parameters116 - see Ostap.Math.Polynomial117 - see Ostap.Math.ChebyshevSum118 - see Ostap.Math.LegendreSum119 - see Ostap.Math.HermiteSum120 - see Ostap.Math.Bernstein121 - see Ostap.Math.BernsteinEven122 - see Ostap.Math.Positive 123 - see Ostap.Math.PositiveEven 124 """125 return poly_factory , ( type ( p ) ,126 array.array ( 'd' , p.pars() ) ,127 p.xmin () ,128 p.xmax () )129 130for t in ( Ostap.Math.Polynomial , 131 Ostap.Math.ChebyshevSum , 132 Ostap.Math.LegendreSum , 133 Ostap.Math.HermiteSum , 134 Ostap.Math.Bernstein , 135 Ostap.Math.BernsteinEven ,136 Ostap.Math.Positive , 137 Ostap.Math.PositiveEven ) :138 139 t.__reduce__ = poly_reduce140 141# =============================================================================142## Specific forms of Bernstein polynomials 143# =============================================================================144# =============================================================================145## reduce monotonic polynomial146# @see Ostap::Math::Monotonic 147def pm_reduce ( p ) :148 """reduce monotonic polynomial149 - see Ostap.Math.Monotonic150 """151 return poly_factory , ( type ( p ) ,152 array.array ( 'd' , p.pars() ) ,153 p.xmin () ,154 p.xmax () ,155 True if p.increasing() else False )156# =============================================================================157## reduce convex polynomial158# @see Ostap::Math::Convex 159def pc_reduce ( p ) :160 """reduce convex polynomial161 - see Ostap.Math.Convex162 """163 return poly_factory , ( type ( p ) ,164 array.array ( 'd' , p.pars() ) ,165 p.xmin () ,166 p.xmax () ,167 True if p.increasing () else False , 168 True if p.convex () else False ) 169# =============================================================================170## reduce convex-only polynomial171# @see Ostap::Math::ConvexOnly172def pco_reduce ( p ) :173 """reduce convex-only polynomial174 - see Ostap.Math.ConvexOnly175 """176 return poly_factory , ( type ( p ) ,177 array.array ( 'd' , p.pars() ) ,178 p.xmin () ,179 p.xmax () ,180 True if p.convex () else False ) 181Ostap.Math.Monotonic .__reduce__ = pm_reduce182Ostap.Math.Convex .__reduce__ = pc_reduce183Ostap.Math.ConvexOnly .__reduce__ = pco_reduce184# =============================================================================185## B-splines 186# =============================================================================187# =============================================================================188## factory for deserisalization of splines 189# @see Ostap::Math::BSPline 190# @see Ostap::Math::PositiveSpline 191# @see Ostap::Math::MonotonicSpline 192# @see Ostap::Math::Conv