mangopay4-python-sdk 3.59.0__tar.gz → 3.60.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/PKG-INFO +1 -1
  2. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/fields.py +51 -1
  3. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/resources.py +4 -1
  4. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/utils.py +70 -0
  5. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay4_python_sdk.egg-info/PKG-INFO +1 -1
  6. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/setup.py +1 -1
  7. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_users.py +9 -0
  8. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/DESCRIPTION.md +0 -0
  9. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/LICENSE +0 -0
  10. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/MANIFEST.in +0 -0
  11. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/Makefile +0 -0
  12. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/README.md +0 -0
  13. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/__init__.py +0 -0
  14. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/api.py +0 -0
  15. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/auth.py +0 -0
  16. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/base.py +0 -0
  17. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/compat.py +0 -0
  18. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/constants.py +0 -0
  19. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/exceptions.py +0 -0
  20. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/page.py +0 -0
  21. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/query.py +0 -0
  22. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/ratelimit.py +0 -0
  23. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay/signals.py +0 -0
  24. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay4_python_sdk.egg-info/SOURCES.txt +0 -0
  25. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay4_python_sdk.egg-info/dependency_links.txt +0 -0
  26. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay4_python_sdk.egg-info/entry_points.txt +0 -0
  27. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay4_python_sdk.egg-info/requires.txt +0 -0
  28. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/mangopay4_python_sdk.egg-info/top_level.txt +0 -0
  29. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/setup.cfg +0 -0
  30. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/__init__.py +0 -0
  31. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/card.json +0 -0
  32. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/cardregistrations.json +0 -0
  33. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/cardregistrations_update.json +0 -0
  34. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/declarative_user.json +0 -0
  35. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/legal_user.json +0 -0
  36. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/legal_user_wallet.json +0 -0
  37. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/legal_user_wallet_89.json +0 -0
  38. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/legal_user_wallet_99.json +0 -0
  39. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/list_ubo_declarations.json +0 -0
  40. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/natural_user.json +0 -0
  41. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/natural_user_wallet.json +0 -0
  42. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/natural_user_wallet_9.json +0 -0
  43. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/ubo.json +0 -0
  44. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/ubo_declaration.json +0 -0
  45. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/ubo_declaration_submit.json +0 -0
  46. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/ubo_update.json +0 -0
  47. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/user_list_2_per_page.json +0 -0
  48. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/user_list_2_per_page_page1.json +0 -0
  49. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/user_list_3_per_page_page2.json +0 -0
  50. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/user_list_full.json +0 -0
  51. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/user_list_page1.json +0 -0
  52. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/fixtures/user_wallet.json +0 -0
  53. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/images/image.jpg +0 -0
  54. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/mocks.py +0 -0
  55. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/resources/TestKycPageFile.png +0 -0
  56. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/resources/settlement_sample.csv +0 -0
  57. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/resources/settlement_sample_bad_footer.csv +0 -0
  58. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/resources/settlement_sample_bad_line.csv +0 -0
  59. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/resources.py +0 -0
  60. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/settings.py +0 -0
  61. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_acquiring.py +0 -0
  62. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_bankaccounts.py +0 -0
  63. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_banking_aliases.py +0 -0
  64. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_base.py +0 -0
  65. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_cards.py +0 -0
  66. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_client_wallets.py +0 -0
  67. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_clients.py +0 -0
  68. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_conversion.py +0 -0
  69. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_country_authorizations.py +0 -0
  70. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_deposits.py +0 -0
  71. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_disputes.py +0 -0
  72. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_documentconsult.py +0 -0
  73. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_emoney.py +0 -0
  74. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_idempotency.py +0 -0
  75. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_identity_verification.py +0 -0
  76. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_kyc_document.py +0 -0
  77. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_kycs.py +0 -0
  78. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_mandates.py +0 -0
  79. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_notifications.py +0 -0
  80. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_payins.py +0 -0
  81. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_payouts.py +0 -0
  82. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_preauthorizations.py +0 -0
  83. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_rate_limit.py +0 -0
  84. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_recipients.py +0 -0
  85. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_refunds.py +0 -0
  86. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_reports.py +0 -0
  87. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_reports_v2.py +0 -0
  88. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_repudiations.py +0 -0
  89. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_settlements.py +0 -0
  90. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_tokens.py +0 -0
  91. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_transactions.py +0 -0
  92. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_transfers.py +0 -0
  93. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_ubos.py +0 -0
  94. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_utils.py +0 -0
  95. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_virtual_account.py +0 -0
  96. {mangopay4_python_sdk-3.59.0 → mangopay4_python_sdk-3.60.0}/tests/test_wallets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mangopay4-python-sdk
3
- Version: 3.59.0
3
+ Version: 3.60.0
4
4
  Summary: A client library written in python to work with mangopay v2 api
5
5
  Home-page: https://github.com/Mangopay/mangopay2-python-sdk
6
6
  Author: Mangopay (www.mangopay.com)
@@ -16,7 +16,7 @@ from .utils import timestamp_from_datetime, timestamp_from_date, Money, DebitedB
16
16
  CompanyNumberValidation, ReportFilter, PayInIntentExternalData, PayInIntentBuyer, SupportedBank, \
17
17
  VerificationOfPayee, PayInIntentRefund, PayInIntentCapture, PayInIntentDispute, CustomFees, MarginsResponse, \
18
18
  UserMargin, ConsentScope, AuthenticationResult, FlowDescriptor, SettlementFooterError, SettlementLineError, \
19
- SettlementLineErrorDetail
19
+ SettlementLineErrorDetail, AccountFunding, AccountFundingSender, KycInformation
20
20
 
21
21
 
22
22
  class FieldDescriptor(object):
@@ -840,6 +840,26 @@ class ScopeBlockedField(Field):
840
840
  return value
841
841
 
842
842
 
843
+ class KycInformationField(Field):
844
+ def python_value(self, value):
845
+ if value is not None:
846
+ return KycInformation(last_kyc_date=value['LastKycDate'],
847
+ kyc_renewal_deadline=value['KycRenewalDeadline'])
848
+
849
+ return value
850
+
851
+ def api_value(self, value):
852
+ value = super(KycInformationField, self).api_value(value)
853
+
854
+ if isinstance(value, KycInformation):
855
+ value = {
856
+ 'LastKycDate': value.last_kyc_date,
857
+ 'KycRenewalDeadline': value.kyc_renewal_deadline,
858
+ }
859
+
860
+ return value
861
+
862
+
843
863
  class ShippingField(Field):
844
864
  def python_value(self, value):
845
865
  if value is not None:
@@ -1599,4 +1619,34 @@ class SettlementLinesErrorsField(Field):
1599
1619
 
1600
1620
  return value
1601
1621
 
1622
+
1623
+ class AccountFundingField(Field):
1624
+ def python_value(self, value):
1625
+ if isinstance(value, dict):
1626
+ return AccountFunding(sender=self._to_sender(value.get('Sender', None)),
1627
+ purpose=value.get('Purpose', None),
1628
+ type=value.get('Type', None))
1629
+
1630
+ return value
1631
+
1632
+ @staticmethod
1633
+ def _to_sender(value):
1634
+ if isinstance(value, dict):
1635
+ return AccountFundingSender(first_name=value.get('FirstName', None),
1636
+ last_name=value.get('LastName', None),
1637
+ address=value.get('Address', None),
1638
+ email=value.get('Email', None),
1639
+ birthday=value.get('Birthday', None),
1640
+ nationality=value.get('Nationality', None),
1641
+ occupation=value.get('Occupation', None),
1642
+ birth_country=value.get('BirthCountry', None))
1643
+
1644
+ return value
1645
+
1646
+ def api_value(self, value):
1647
+ value = super(AccountFundingField, self).api_value(value)
1648
+
1649
+ if isinstance(value, AccountFunding):
1650
+ return value.to_api_json()
1651
+
1602
1652
  return value
@@ -22,7 +22,8 @@ from .fields import (PrimaryKeyField, EmailField, CharField,
22
22
  PayInIntentExternalDataField, PayInIntentBuyerField, SupportedBanksField, VerificationOfPayeeField,
23
23
  PayInIntentRefundField, PayInIntentCaptureField, PayInIntentDisputeField, CustomFeesField,
24
24
  UserMarginField, MarginsResponseField, ConsentScopeField, AuthenticationResultField,
25
- FlowDescriptorField, SettlementFooterErrorsField, SettlementLinesErrorsField)
25
+ FlowDescriptorField, SettlementFooterErrorsField, SettlementLinesErrorsField,
26
+ AccountFundingField, KycInformationField)
26
27
  from .query import InsertQuery, UpdateQuery, SelectQuery, ActionQuery, DeleteQuery
27
28
 
28
29
 
@@ -1341,6 +1342,7 @@ class DirectPayIn(PayIn):
1341
1342
  preferred_card_network = CharField(api_name='PreferredCardNetwork')
1342
1343
  card_info = CardInfoField(api_name='CardInfo')
1343
1344
  payment_category = CharField(api_name='PaymentCategory')
1345
+ account_funding = AccountFundingField(api_name='AccountFunding')
1344
1346
 
1345
1347
  class Meta:
1346
1348
  verbose_name = 'payin'
@@ -3036,6 +3038,7 @@ class Ubo(BaseModel):
3036
3038
  class UserBlockStatus(BaseModel):
3037
3039
  scope_blocked = ScopeBlockedField(api_name='ScopeBlocked', required=True)
3038
3040
  action_code = CharField(api_name='ActionCode', required=True)
3041
+ kyc_information = KycInformationField(api_name='KycInformation')
3039
3042
 
3040
3043
  class Meta:
3041
3044
  verbose_name = 'userblockstatus'
@@ -570,6 +570,53 @@ class Shipping(object):
570
570
  (self.first_name, self.last_name, self.address)
571
571
 
572
572
 
573
+ @add_camelcase_aliases
574
+ class AccountFundingSender(object):
575
+ def __init__(self, first_name=None, last_name=None, address=None, email=None, birthday=None,
576
+ nationality=None, occupation=None, birth_country=None):
577
+ self.first_name = first_name
578
+ self.last_name = last_name
579
+ self.address = address
580
+ self.email = email
581
+ self.birthday = birthday
582
+ self.nationality = nationality
583
+ self.occupation = occupation
584
+ self.birth_country = birth_country
585
+
586
+ def __str__(self):
587
+ return 'AccountFundingSender: %s %s' % (self.first_name, self.last_name)
588
+
589
+ def to_api_json(self):
590
+ return {
591
+ 'FirstName': self.first_name,
592
+ 'LastName': self.last_name,
593
+ 'Address': self.address,
594
+ 'Email': self.email,
595
+ 'Birthday': self.birthday,
596
+ 'Nationality': self.nationality,
597
+ 'Occupation': self.occupation,
598
+ 'BirthCountry': self.birth_country
599
+ }
600
+
601
+
602
+ @add_camelcase_aliases
603
+ class AccountFunding(object):
604
+ def __init__(self, sender=None, purpose=None, type=None):
605
+ self.sender = sender
606
+ self.purpose = purpose
607
+ self.type = type
608
+
609
+ def __str__(self):
610
+ return 'AccountFunding: %s, %s' % (self.purpose, self.type)
611
+
612
+ def to_api_json(self):
613
+ return {
614
+ 'Sender': self.sender,
615
+ 'Purpose': self.purpose,
616
+ 'Type': self.type
617
+ }
618
+
619
+
573
620
  @add_camelcase_aliases
574
621
  class CurrentState(object):
575
622
  def __init__(self, payins_linked=None, cumulated_debited_amount=None, cumulated_debited_fees=None,
@@ -607,6 +654,29 @@ class ScopeBlocked(object):
607
654
  }
608
655
 
609
656
 
657
+ @add_camelcase_aliases
658
+ class KycInformation(object):
659
+ def __init__(self, last_kyc_date=None, kyc_renewal_deadline=None):
660
+ self.last_kyc_date = last_kyc_date
661
+ self.kyc_renewal_deadline = kyc_renewal_deadline
662
+
663
+ def __str__(self):
664
+ return 'KycInformation: %s, %s' % (self.last_kyc_date, self.kyc_renewal_deadline)
665
+
666
+ def __eq__(self, other):
667
+ if isinstance(other, KycInformation):
668
+ stat = ((self.last_kyc_date == other.last_kyc_date) and
669
+ (self.kyc_renewal_deadline == other.kyc_renewal_deadline))
670
+ return stat
671
+ return False
672
+
673
+ def to_api_json(self):
674
+ return {
675
+ "LastKycDate": self.last_kyc_date,
676
+ "KycRenewalDeadline": self.kyc_renewal_deadline,
677
+ }
678
+
679
+
610
680
  # This code belongs to https://github.com/carljm/django-model-utils
611
681
  class Choices(object):
612
682
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mangopay4-python-sdk
3
- Version: 3.59.0
3
+ Version: 3.60.0
4
4
  Summary: A client library written in python to work with mangopay v2 api
5
5
  Home-page: https://github.com/Mangopay/mangopay2-python-sdk
6
6
  Author: Mangopay (www.mangopay.com)
@@ -10,7 +10,7 @@ with open(path.join(here, 'DESCRIPTION.md'), encoding='utf-8') as f:
10
10
 
11
11
  setup(
12
12
  name='mangopay4-python-sdk',
13
- version='3.59.0',
13
+ version='3.60.0',
14
14
  description='A client library written in python to work with mangopay v2 api',
15
15
  long_description='This SDK is a client library for interacting with the Mangopay API.',
16
16
  url='https://github.com/Mangopay/mangopay2-python-sdk',
@@ -918,6 +918,15 @@ class PayInsTestLive(BaseTestLive):
918
918
 
919
919
  self.assertIsNotNone(regulatory)
920
920
 
921
+ def test_User_get_regulatory_with_kyc_information(self):
922
+ user = NaturalUser.get('user_m_01M114G394FJCE0QZJP97QADYZ')
923
+ regulatory = user.get_regulatory()
924
+
925
+ self.assertIsNotNone(regulatory)
926
+ self.assertIsNotNone(regulatory.kyc_information)
927
+ self.assertIsNotNone(regulatory.kyc_information.last_kyc_date)
928
+ self.assertIsNotNone(regulatory.kyc_information.kyc_renewal_deadline)
929
+
921
930
  def test_Users_CloseNatural(self):
922
931
  user = BaseTestLive.get_john_instance()
923
932
  NaturalUser(**user.save())