satcfdi.create.pld.fes   F
last analyzed

Complexity

Total Complexity 61

Size/Duplication

Total Lines 1416
Duplicated Lines 5.3 %

Importance

Changes 0
Metric Value
eloc 701
dl 75
loc 1416
rs 3.419
c 0
b 0
f 0
wmc 61

61 Methods

Rating   Name   Duplication   Size   Complexity  
A GarantiaOtroType.__init__() 0 6 1
A TipoPersonaSimpleType.__init__() 0 10 1
A DatosInmueblesType.__init__() 0 6 1
A Autoridad1Type.__init__() 0 8 1
A TipoGaranteType.__init__() 0 10 1
A InmuebleType.__init__() 0 24 1
A DatosAccionista1Type.__init__() 0 8 1
A ContratoMutuoType.__init__() 0 18 1
A DatosPoderdanteType.__init__() 0 6 1
A Administrativo1Type.__init__() 0 10 1
A JurisdiccionalType.__init__() 0 12 1
A TipoAutoridadType.__init__() 0 8 1
A ConstitucionPmType.__init__() 0 10 1
A GaranteMoralType.__init__() 0 10 1
A AdministrativoType.__init__() 0 10 1
A PropietarioType.__init__() 0 6 1
A DatosGarantiaType.__init__() 0 10 1
A NacionalType.__init__() 0 14 1
A PersonaMoralModificaType.__init__() 0 20 1
A AvaluoType.__init__() 0 20 1
A GaranteFideicomisoType.__init__() 0 10 1
A TelefonoType.__init__() 0 10 1
A ModificacionPatrimonialType.__init__() 0 10 1
A PersonaMoralType.__init__() 0 14 1
A PersonaFisicaSimpleType.__init__() 0 18 1
A OperacionType.__init__() 0 8 1
A OtorgamientoPoderType.__init__() 0 12 1
A InformeType.__init__() 0 12 1
A DerechosInmuebleType.__init__() 0 20 1
A DatosPersonaActoType.__init__() 0 14 1
A FideicomisoSimpleType.__init__() 0 10 1
A PersonaMoralConstType.__init__() 28 28 1
A DatosModificacionType.__init__() 18 18 1
A TipoDomicilioType.__init__() 0 8 1
A DatosApoderadoType.__init__() 0 8 1
A TipoAutoridad1Type.__init__() 0 8 1
A OperacionesType.__init__() 0 6 1
A RepresentanteApoderadoType.__init__() 0 16 1
A DatosAccionistaType.__init__() 0 10 1
A GarantiaInmuebleType.__init__() 0 12 1
A ExtranjeroType.__init__() 0 20 1
A ArchivoType.__init__() 0 6 1
A DatosPropietarioType.__init__() 0 8 1
A TipoPersonaType.__init__() 0 10 1
A AlertaType.__init__() 0 8 1
A DomicilioOficinaType.__init__() 0 8 1
A DatosDeudorType.__init__() 0 6 1
A DatosAcreedorType.__init__() 0 6 1
A TribunalType.__init__() 0 8 1
A GaranteFisicaType.__init__() 0 16 1
A PersonaMoralSimpleType.__init__() 0 12 1
A CapitalSocialType.__init__() 0 8 1
A PersonasActoType.__init__() 0 6 1
A PersonaFisicaType.__init__() 0 18 1
A BienGarantiaType.__init__() 0 8 1
A AutoridadType.__init__() 0 8 1
A DatosLiquidacionType.__init__() 0 8 1
A AvisoType.__init__() 0 14 1
A ActividadType.__init__() 0 16 1
A FideicomisoType.__init__() 0 12 1
A ModificatorioType.__init__() 0 8 1

How to fix   Duplicated Code    Complexity   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

Complexity

 Tip:   Before tackling complexity, make sure that you eliminate any duplication first. This often can reduce the size of classes significantly.

Complex classes like satcfdi.create.pld.fes often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
"""fes http://www.uif.shcp.gob.mx/recepcion/fes"""
2
from decimal import Decimal
3
from datetime import datetime, date, time
4
from collections.abc import Sequence
5
from ...cfdi import CFDI
6
from ...xelement import XElement
7
from ...utils import ScalarMap
8
9
10
class AlertaType(ScalarMap):
11
    """
12
    
13
    :param tipo_alerta:
14
    :param descripcion_alerta:
15
    """
16
    
17
    def __init__(
18
            self,
19
            tipo_alerta: str,
20
            descripcion_alerta: str = None,
21
    ): 
22
        super().__init__({
23
            'TipoAlerta': tipo_alerta,
24
            'DescripcionAlerta': descripcion_alerta,
25
        })
26
        
27
28
class TribunalType(ScalarMap):
29
    """
30
    
31
    :param clave_tribunal_dependencia:
32
    :param clave_actividad:
33
    """
34
    
35
    def __init__(
36
            self,
37
            clave_tribunal_dependencia: str,
38
            clave_actividad: str,
39
    ): 
40
        super().__init__({
41
            'ClaveTribunalDependencia': clave_tribunal_dependencia,
42
            'ClaveActividad': clave_actividad,
43
        })
44
        
45
46
class PropietarioType(ScalarMap):
47
    """
48
    
49
    :param tipo_persona:
50
    """
51
    
52
    def __init__(
53
            self,
54
            tipo_persona: TipoPersonaSimpleType | dict,
55
    ): 
56
        super().__init__({
57
            'TipoPersona': tipo_persona,
58
        })
59
        
60
61
class DatosPropietarioType(ScalarMap):
62
    """
63
    
64
    :param propietario_solicita:
65
    :param dato_propietario:
66
    """
67
    
68
    def __init__(
69
            self,
70
            propietario_solicita: str,
71
            dato_propietario: PropietarioType | dict | Sequence[PropietarioType | dict] = None,
72
    ): 
73
        super().__init__({
74
            'PropietarioSolicita': propietario_solicita,
75
            'DatoPropietario': dato_propietario,
76
        })
77
        
78
79
class DatosLiquidacionType(ScalarMap):
80
    """
81
    
82
    :param moneda:
83
    :param monto_operacion:
84
    """
85
    
86
    def __init__(
87
            self,
88
            moneda: str,
89
            monto_operacion: str,
90
    ): 
91
        super().__init__({
92
            'Moneda': moneda,
93
            'MontoOperacion': monto_operacion,
94
        })
95
        
96
97
class DatosGarantiaType(ScalarMap):
98
    """
99
    
100
    :param tipo_garantia:
101
    :param datos_bien_garantia:
102
    :param tipo_persona:
103
    """
104
    
105
    def __init__(
106
            self,
107
            tipo_garantia: str,
108
            datos_bien_garantia: BienGarantiaType | dict = None,
109
            tipo_persona: TipoGaranteType | dict = None,
110
    ): 
111
        super().__init__({
112
            'TipoGarantia': tipo_garantia,
113
            'DatosBienGarantia': datos_bien_garantia,
114
            'TipoPersona': tipo_persona,
115
        })
116
        
117
118
class BienGarantiaType(ScalarMap):
119
    """
120
    
121
    :param datos_inmueble:
122
    :param datos_otro:
123
    """
124
    
125
    def __init__(
126
            self,
127
            datos_inmueble: GarantiaInmuebleType | dict = None,
128
            datos_otro: GarantiaOtroType | dict = None,
129
    ): 
130
        super().__init__({
131
            'DatosInmueble': datos_inmueble,
132
            'DatosOtro': datos_otro,
133
        })
134
        
135
136
class GarantiaOtroType(ScalarMap):
137
    """
138
    
139
    :param descripcion_garantia:
140
    """
141
    
142
    def __init__(
143
            self,
144
            descripcion_garantia: str,
145
    ): 
146
        super().__init__({
147
            'DescripcionGarantia': descripcion_garantia,
148
        })
149
        
150
151
class GarantiaInmuebleType(ScalarMap):
152
    """
153
    
154
    :param tipo_inmueble:
155
    :param valor_referencia:
156
    :param codigo_postal:
157
    :param folio_real:
158
    """
159
    
160
    def __init__(
161
            self,
162
            tipo_inmueble: str,
163
            valor_referencia: str,
164
            codigo_postal: str,
165
            folio_real: str,
166
    ): 
167
        super().__init__({
168
            'TipoInmueble': tipo_inmueble,
169
            'ValorReferencia': valor_referencia,
170
            'CodigoPostal': codigo_postal,
171
            'FolioReal': folio_real,
172
        })
173
        
174
175
class TipoGaranteType(ScalarMap):
176
    """
177
    
178
    :param persona_fisica:
179
    :param persona_moral:
180
    :param fideicomiso:
181
    """
182
    
183
    def __init__(
184
            self,
185
            persona_fisica: GaranteFisicaType | dict = None,
186
            persona_moral: GaranteMoralType | dict = None,
187
            fideicomiso: GaranteFideicomisoType | dict = None,
188
    ): 
189
        super().__init__({
190
            'PersonaFisica': persona_fisica,
191
            'PersonaMoral': persona_moral,
192
            'Fideicomiso': fideicomiso,
193
        })
194
        
195
196
class GaranteFideicomisoType(ScalarMap):
197
    """
198
    
199
    :param denominacion_razon:
200
    :param rfc:
201
    :param identificador_fideicomiso:
202
    """
203
    
204
    def __init__(
205
            self,
206
            denominacion_razon: str,
207
            rfc: str = None,
208
            identificador_fideicomiso: str = None,
209
    ): 
210
        super().__init__({
211
            'DenominacionRazon': denominacion_razon,
212
            'Rfc': rfc,
213
            'IdentificadorFideicomiso': identificador_fideicomiso,
214
        })
215
        
216
217
class GaranteMoralType(ScalarMap):
218
    """
219
    
220
    :param denominacion_razon:
221
    :param fecha_constitucion:
222
    :param rfc:
223
    """
224
    
225
    def __init__(
226
            self,
227
            denominacion_razon: str,
228
            fecha_constitucion: date = None,
229
            rfc: str = None,
230
    ): 
231
        super().__init__({
232
            'DenominacionRazon': denominacion_razon,
233
            'FechaConstitucion': fecha_constitucion,
234
            'Rfc': rfc,
235
        })
236
        
237
238
class GaranteFisicaType(ScalarMap):
239
    """
240
    
241
    :param nombre:
242
    :param apellido_paterno:
243
    :param apellido_materno:
244
    :param fecha_nacimiento:
245
    :param rfc:
246
    :param curp:
247
    """
248
    
249
    def __init__(
250
            self,
251
            nombre: str,
252
            apellido_paterno: str,
253
            apellido_materno: str,
254
            fecha_nacimiento: date = None,
255
            rfc: str = None,
256
            curp: str = None,
257
    ): 
258
        super().__init__({
259
            'Nombre': nombre,
260
            'ApellidoPaterno': apellido_paterno,
261
            'ApellidoMaterno': apellido_materno,
262
            'FechaNacimiento': fecha_nacimiento,
263
            'Rfc': rfc,
264
            'Curp': curp,
265
        })
266
        
267
268
class DatosDeudorType(ScalarMap):
269
    """
270
    
271
    :param tipo_persona:
272
    """
273
    
274
    def __init__(
275
            self,
276
            tipo_persona: TipoPersonaSimpleType | dict,
277
    ): 
278
        super().__init__({
279
            'TipoPersona': tipo_persona,
280
        })
281
        
282
283
class DatosAcreedorType(ScalarMap):
284
    """
285
    
286
    :param tipo_persona:
287
    """
288
    
289
    def __init__(
290
            self,
291
            tipo_persona: TipoPersonaSimpleType | dict,
292
    ): 
293
        super().__init__({
294
            'TipoPersona': tipo_persona,
295
        })
296
        
297
298 View Code Duplication
class DatosModificacionType(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
299
    """
300
    
301
    :param tipo_modificacion_capital_fijo:
302
    :param inicial_capital_fijo:
303
    :param final_capital_fijo:
304
    :param tipo_modificacion_capital_variable:
305
    :param inicial_capital_variable:
306
    :param final_capital_variable:
307
    :param datos_accionista:
308
    """
309
    
310
    def __init__(
311
            self,
312
            tipo_modificacion_capital_fijo: str,
313
            inicial_capital_fijo: str,
314
            final_capital_fijo: str,
315
            tipo_modificacion_capital_variable: str,
316
            inicial_capital_variable: str,
317
            final_capital_variable: str,
318
            datos_accionista: DatosAccionista1Type | dict | Sequence[DatosAccionista1Type | dict],
319
    ): 
320
        super().__init__({
321
            'TipoModificacionCapitalFijo': tipo_modificacion_capital_fijo,
322
            'InicialCapitalFijo': inicial_capital_fijo,
323
            'FinalCapitalFijo': final_capital_fijo,
324
            'TipoModificacionCapitalVariable': tipo_modificacion_capital_variable,
325
            'InicialCapitalVariable': inicial_capital_variable,
326
            'FinalCapitalVariable': final_capital_variable,
327
            'DatosAccionista': datos_accionista,
328
        })
329
        
330
331
class PersonaMoralModificaType(ScalarMap):
332
    """
333
    
334
    :param denominacion_razon:
335
    :param pais_nacionalidad:
336
    :param giro_mercantil:
337
    :param numero_total_acciones:
338
    :param motivo_modificacion:
339
    :param fecha_constitucion:
340
    :param rfc:
341
    :param instrumento_publico:
342
    """
343
    
344
    def __init__(
345
            self,
346
            denominacion_razon: str,
347
            pais_nacionalidad: str,
348
            giro_mercantil: str,
349
            numero_total_acciones: str,
350
            motivo_modificacion: str,
351
            fecha_constitucion: date = None,
352
            rfc: str = None,
353
            instrumento_publico: str = None,
354
    ): 
355
        super().__init__({
356
            'DenominacionRazon': denominacion_razon,
357
            'PaisNacionalidad': pais_nacionalidad,
358
            'GiroMercantil': giro_mercantil,
359
            'NumeroTotalAcciones': numero_total_acciones,
360
            'MotivoModificacion': motivo_modificacion,
361
            'FechaConstitucion': fecha_constitucion,
362
            'Rfc': rfc,
363
            'InstrumentoPublico': instrumento_publico,
364
        })
365
        
366
367
class DatosAccionista1Type(ScalarMap):
368
    """
369
    
370
    :param tipo_persona:
371
    :param numero_acciones:
372
    """
373
    
374
    def __init__(
375
            self,
376
            tipo_persona: TipoPersonaSimpleType | dict,
377
            numero_acciones: str,
378
    ): 
379
        super().__init__({
380
            'TipoPersona': tipo_persona,
381
            'NumeroAcciones': numero_acciones,
382
        })
383
        
384
385
class CapitalSocialType(ScalarMap):
386
    """
387
    
388
    :param capital_fijo:
389
    :param capital_variable:
390
    """
391
    
392
    def __init__(
393
            self,
394
            capital_fijo: str,
395
            capital_variable: str = None,
396
    ): 
397
        super().__init__({
398
            'CapitalFijo': capital_fijo,
399
            'CapitalVariable': capital_variable,
400
        })
401
        
402
403
class DatosAccionistaType(ScalarMap):
404
    """
405
    
406
    :param cargo_accionista:
407
    :param tipo_persona:
408
    :param numero_acciones:
409
    """
410
    
411
    def __init__(
412
            self,
413
            cargo_accionista: str,
414
            tipo_persona: TipoPersonaSimpleType | dict,
415
            numero_acciones: str,
416
    ): 
417
        super().__init__({
418
            'CargoAccionista': cargo_accionista,
419
            'TipoPersona': tipo_persona,
420
            'NumeroAcciones': numero_acciones,
421
        })
422
        
423
424 View Code Duplication
class PersonaMoralConstType(ScalarMap):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
425
    """
426
    
427
    :param tipo_persona_moral:
428
    :param denominacion_razon:
429
    :param giro_mercantil:
430
    :param numero_total_acciones:
431
    :param consejo_vigilancia:
432
    :param motivo_constitucion:
433
    :param datos_accionista:
434
    :param capital_social:
435
    :param tipo_persona_moral_otra:
436
    :param folio_mercantil:
437
    :param entidad_federativa:
438
    :param instrumento_publico:
439
    """
440
    
441
    def __init__(
442
            self,
443
            tipo_persona_moral: str,
444
            denominacion_razon: str,
445
            giro_mercantil: str,
446
            numero_total_acciones: str,
447
            consejo_vigilancia: str,
448
            motivo_constitucion: str,
449
            datos_accionista: DatosAccionistaType | dict | Sequence[DatosAccionistaType | dict],
450
            capital_social: CapitalSocialType | dict,
451
            tipo_persona_moral_otra: str = None,
452
            folio_mercantil: str = None,
453
            entidad_federativa: str = None,
454
            instrumento_publico: str = None,
455
    ): 
456
        super().__init__({
457
            'TipoPersonaMoral': tipo_persona_moral,
458
            'DenominacionRazon': denominacion_razon,
459
            'GiroMercantil': giro_mercantil,
460
            'NumeroTotalAcciones': numero_total_acciones,
461
            'ConsejoVigilancia': consejo_vigilancia,
462
            'MotivoConstitucion': motivo_constitucion,
463
            'DatosAccionista': datos_accionista,
464
            'CapitalSocial': capital_social,
465
            'TipoPersonaMoralOtra': tipo_persona_moral_otra,
466
            'FolioMercantil': folio_mercantil,
467
            'EntidadFederativa': entidad_federativa,
468
            'InstrumentoPublico': instrumento_publico,
469
        })
470
        
471
472
class Autoridad1Type(ScalarMap):
473
    """
474
    
475
    :param tipo_autoridad:
476
    :param domicilio_oficina:
477
    """
478
    
479
    def __init__(
480
            self,
481
            tipo_autoridad: TipoAutoridad1Type | dict,
482
            domicilio_oficina: DomicilioOficinaType | dict = None,
483
    ): 
484
        super().__init__({
485
            'TipoAutoridad': tipo_autoridad,
486
            'DomicilioOficina': domicilio_oficina,
487
        })
488
        
489
490
class TipoAutoridad1Type(ScalarMap):
491
    """
492
    
493
    :param administrativo:
494
    :param jurisdiccional:
495
    """
496
    
497
    def __init__(
498
            self,
499
            administrativo: Administrativo1Type | dict = None,
500
            jurisdiccional: JurisdiccionalType | dict = None,
501
    ): 
502
        super().__init__({
503
            'Administrativo': administrativo,
504
            'Jurisdiccional': jurisdiccional,
505
        })
506
        
507
508
class DatosApoderadoType(ScalarMap):
509
    """
510
    
511
    :param tipo_poder:
512
    :param tipo_persona:
513
    """
514
    
515
    def __init__(
516
            self,
517
            tipo_poder: str,
518
            tipo_persona: TipoPersonaSimpleType | dict,
519
    ): 
520
        super().__init__({
521
            'TipoPoder': tipo_poder,
522
            'TipoPersona': tipo_persona,
523
        })
524
        
525
526
class DatosPoderdanteType(ScalarMap):
527
    """
528
    
529
    :param tipo_persona:
530
    """
531
    
532
    def __init__(
533
            self,
534
            tipo_persona: TipoPersonaSimpleType | dict,
535
    ): 
536
        super().__init__({
537
            'TipoPersona': tipo_persona,
538
        })
539
        
540
541
class TipoPersonaSimpleType(ScalarMap):
542
    """
543
    
544
    :param persona_fisica:
545
    :param persona_moral:
546
    :param fideicomiso:
547
    """
548
    
549
    def __init__(
550
            self,
551
            persona_fisica: PersonaFisicaSimpleType | dict = None,
552
            persona_moral: PersonaMoralSimpleType | dict = None,
553
            fideicomiso: FideicomisoSimpleType | dict = None,
554
    ): 
555
        super().__init__({
556
            'PersonaFisica': persona_fisica,
557
            'PersonaMoral': persona_moral,
558
            'Fideicomiso': fideicomiso,
559
        })
560
        
561
562
class AutoridadType(ScalarMap):
563
    """
564
    
565
    :param tipo_autoridad:
566
    :param domicilio_oficina:
567
    """
568
    
569
    def __init__(
570
            self,
571
            tipo_autoridad: TipoAutoridadType | dict,
572
            domicilio_oficina: DomicilioOficinaType | dict = None,
573
    ): 
574
        super().__init__({
575
            'TipoAutoridad': tipo_autoridad,
576
            'DomicilioOficina': domicilio_oficina,
577
        })
578
        
579
580
class DomicilioOficinaType(ScalarMap):
581
    """
582
    
583
    :param nacional:
584
    :param extranjero:
585
    """
586
    
587
    def __init__(
588
            self,
589
            nacional: NacionalType | dict = None,
590
            extranjero: ExtranjeroType | dict = None,
591
    ): 
592
        super().__init__({
593
            'Nacional': nacional,
594
            'Extranjero': extranjero,
595
        })
596
        
597
598
class TipoAutoridadType(ScalarMap):
599
    """
600
    
601
    :param administrativo:
602
    :param jurisdiccional:
603
    """
604
    
605
    def __init__(
606
            self,
607
            administrativo: AdministrativoType | dict = None,
608
            jurisdiccional: JurisdiccionalType | dict = None,
609
    ): 
610
        super().__init__({
611
            'Administrativo': administrativo,
612
            'Jurisdiccional': jurisdiccional,
613
        })
614
        
615
616
class JurisdiccionalType(ScalarMap):
617
    """
618
    
619
    :param organo:
620
    :param tipo_juicio:
621
    :param materia:
622
    :param expediente:
623
    """
624
    
625
    def __init__(
626
            self,
627
            organo: str,
628
            tipo_juicio: str,
629
            materia: str,
630
            expediente: str,
631
    ): 
632
        super().__init__({
633
            'Organo': organo,
634
            'TipoJuicio': tipo_juicio,
635
            'Materia': materia,
636
            'Expediente': expediente,
637
        })
638
        
639
640
class AdministrativoType(ScalarMap):
641
    """
642
    
643
    :param organo:
644
    :param cargo:
645
    :param instrumento_publico:
646
    """
647
    
648
    def __init__(
649
            self,
650
            organo: str,
651
            cargo: str,
652
            instrumento_publico: str,
653
    ): 
654
        super().__init__({
655
            'Organo': organo,
656
            'Cargo': cargo,
657
            'InstrumentoPublico': instrumento_publico,
658
        })
659
        
660
661
class TelefonoType(ScalarMap):
662
    """
663
    
664
    :param numero_telefono:
665
    :param clave_pais:
666
    :param correo_electronico:
667
    """
668
    
669
    def __init__(
670
            self,
671
            numero_telefono: str,
672
            clave_pais: str = None,
673
            correo_electronico: str = None,
674
    ): 
675
        super().__init__({
676
            'NumeroTelefono': numero_telefono,
677
            'ClavePais': clave_pais,
678
            'CorreoElectronico': correo_electronico,
679
        })
680
        
681
682
class ExtranjeroType(ScalarMap):
683
    """
684
    
685
    :param pais:
686
    :param estado_provincia:
687
    :param ciudad_poblacion:
688
    :param colonia:
689
    :param calle:
690
    :param numero_exterior:
691
    :param codigo_postal:
692
    :param numero_interior:
693
    """
694
    
695
    def __init__(
696
            self,
697
            pais: str,
698
            estado_provincia: str,
699
            ciudad_poblacion: str,
700
            colonia: str,
701
            calle: str,
702
            numero_exterior: str,
703
            codigo_postal: str,
704
            numero_interior: str = None,
705
    ): 
706
        super().__init__({
707
            'Pais': pais,
708
            'EstadoProvincia': estado_provincia,
709
            'CiudadPoblacion': ciudad_poblacion,
710
            'Colonia': colonia,
711
            'Calle': calle,
712
            'NumeroExterior': numero_exterior,
713
            'CodigoPostal': codigo_postal,
714
            'NumeroInterior': numero_interior,
715
        })
716
        
717
718
class NacionalType(ScalarMap):
719
    """
720
    
721
    :param colonia:
722
    :param calle:
723
    :param numero_exterior:
724
    :param codigo_postal:
725
    :param numero_interior:
726
    """
727
    
728
    def __init__(
729
            self,
730
            colonia: str,
731
            calle: str,
732
            numero_exterior: str,
733
            codigo_postal: str,
734
            numero_interior: str = None,
735
    ): 
736
        super().__init__({
737
            'Colonia': colonia,
738
            'Calle': calle,
739
            'NumeroExterior': numero_exterior,
740
            'CodigoPostal': codigo_postal,
741
            'NumeroInterior': numero_interior,
742
        })
743
        
744
745
class TipoDomicilioType(ScalarMap):
746
    """
747
    
748
    :param nacional:
749
    :param extranjero:
750
    """
751
    
752
    def __init__(
753
            self,
754
            nacional: NacionalType | dict = None,
755
            extranjero: ExtranjeroType | dict = None,
756
    ): 
757
        super().__init__({
758
            'Nacional': nacional,
759
            'Extranjero': extranjero,
760
        })
761
        
762
763
class DatosPersonaActoType(ScalarMap):
764
    """
765
    
766
    :param caracter:
767
    :param tipo_persona:
768
    :param caracter_otro:
769
    :param tipo_domicilio:
770
    :param telefono:
771
    """
772
    
773
    def __init__(
774
            self,
775
            caracter: str,
776
            tipo_persona: TipoPersonaType | dict,
777
            caracter_otro: str = None,
778
            tipo_domicilio: TipoDomicilioType | dict = None,
779
            telefono: TelefonoType | dict = None,
780
    ): 
781
        super().__init__({
782
            'Caracter': caracter,
783
            'TipoPersona': tipo_persona,
784
            'CaracterOtro': caracter_otro,
785
            'TipoDomicilio': tipo_domicilio,
786
            'Telefono': telefono,
787
        })
788
        
789
790
class FideicomisoType(ScalarMap):
791
    """
792
    
793
    :param denominacion_razon:
794
    :param apoderado_delegado:
795
    :param rfc:
796
    :param identificador_fideicomiso:
797
    """
798
    
799
    def __init__(
800
            self,
801
            denominacion_razon: str,
802
            apoderado_delegado: RepresentanteApoderadoType | dict,
803
            rfc: str = None,
804
            identificador_fideicomiso: str = None,
805
    ): 
806
        super().__init__({
807
            'DenominacionRazon': denominacion_razon,
808
            'ApoderadoDelegado': apoderado_delegado,
809
            'Rfc': rfc,
810
            'IdentificadorFideicomiso': identificador_fideicomiso,
811
        })
812
        
813
814
class PersonaMoralType(ScalarMap):
815
    """
816
    
817
    :param denominacion_razon:
818
    :param pais_nacionalidad:
819
    :param representante_apoderado:
820
    :param fecha_constitucion:
821
    :param rfc:
822
    """
823
    
824
    def __init__(
825
            self,
826
            denominacion_razon: str,
827
            pais_nacionalidad: str,
828
            representante_apoderado: RepresentanteApoderadoType | dict,
829
            fecha_constitucion: date = None,
830
            rfc: str = None,
831
    ): 
832
        super().__init__({
833
            'DenominacionRazon': denominacion_razon,
834
            'PaisNacionalidad': pais_nacionalidad,
835
            'RepresentanteApoderado': representante_apoderado,
836
            'FechaConstitucion': fecha_constitucion,
837
            'Rfc': rfc,
838
        })
839
        
840
841
class PersonaFisicaType(ScalarMap):
842
    """
843
    
844
    :param nombre:
845
    :param apellido_paterno:
846
    :param apellido_materno:
847
    :param pais_nacionalidad:
848
    :param fecha_nacimiento:
849
    :param rfc:
850
    :param curp:
851
    """
852
    
853
    def __init__(
854
            self,
855
            nombre: str,
856
            apellido_paterno: str,
857
            apellido_materno: str,
858
            pais_nacionalidad: str,
859
            fecha_nacimiento: date = None,
860
            rfc: str = None,
861
            curp: str = None,
862
    ): 
863
        super().__init__({
864
            'Nombre': nombre,
865
            'ApellidoPaterno': apellido_paterno,
866
            'ApellidoMaterno': apellido_materno,
867
            'PaisNacionalidad': pais_nacionalidad,
868
            'FechaNacimiento': fecha_nacimiento,
869
            'Rfc': rfc,
870
            'Curp': curp,
871
        })
872
        
873
874
class TipoPersonaType(ScalarMap):
875
    """
876
    
877
    :param persona_fisica:
878
    :param persona_moral:
879
    :param fideicomiso:
880
    """
881
    
882
    def __init__(
883
            self,
884
            persona_fisica: PersonaFisicaType | dict = None,
885
            persona_moral: PersonaMoralType | dict = None,
886
            fideicomiso: FideicomisoType | dict = None,
887
    ): 
888
        super().__init__({
889
            'PersonaFisica': persona_fisica,
890
            'PersonaMoral': persona_moral,
891
            'Fideicomiso': fideicomiso,
892
        })
893
        
894
895
class PersonasActoType(ScalarMap):
896
    """
897
    
898
    :param datos_persona_acto:
899
    """
900
    
901
    def __init__(
902
            self,
903
            datos_persona_acto: DatosPersonaActoType | dict | Sequence[DatosPersonaActoType | dict],
904
    ): 
905
        super().__init__({
906
            'DatosPersonaActo': datos_persona_acto,
907
        })
908
        
909
910
class InmuebleType(ScalarMap):
911
    """
912
    
913
    :param tipo_inmueble:
914
    :param valor_catastral:
915
    :param colonia:
916
    :param calle:
917
    :param numero_exterior:
918
    :param codigo_postal:
919
    :param dimension_terreno:
920
    :param dimension_construido:
921
    :param folio_real:
922
    :param numero_interior:
923
    """
924
    
925
    def __init__(
926
            self,
927
            tipo_inmueble: str,
928
            valor_catastral: str,
929
            colonia: str,
930
            calle: str,
931
            numero_exterior: str,
932
            codigo_postal: str,
933
            dimension_terreno: str,
934
            dimension_construido: str,
935
            folio_real: str,
936
            numero_interior: str = None,
937
    ): 
938
        super().__init__({
939
            'TipoInmueble': tipo_inmueble,
940
            'ValorCatastral': valor_catastral,
941
            'Colonia': colonia,
942
            'Calle': calle,
943
            'NumeroExterior': numero_exterior,
944
            'CodigoPostal': codigo_postal,
945
            'DimensionTerreno': dimension_terreno,
946
            'DimensionConstruido': dimension_construido,
947
            'FolioReal': folio_real,
948
            'NumeroInterior': numero_interior,
949
        })
950
        
951
952
class DatosInmueblesType(ScalarMap):
953
    """
954
    
955
    :param caracteristicas_inmueble:
956
    """
957
    
958
    def __init__(
959
            self,
960
            caracteristicas_inmueble: InmuebleType | dict | Sequence[InmuebleType | dict],
961
    ): 
962
        super().__init__({
963
            'CaracteristicasInmueble': caracteristicas_inmueble,
964
        })
965
        
966
967
class AvaluoType(ScalarMap):
968
    """
969
    
970
    :param organo:
971
    :param cargo:
972
    :param expediente_oficio:
973
    :param persona_solicita:
974
    :param tipo_bien:
975
    :param valor_avaluo:
976
    :param datos_propietario:
977
    :param descripcion:
978
    """
979
    
980
    def __init__(
981
            self,
982
            organo: str,
983
            cargo: str,
984
            expediente_oficio: str,
985
            persona_solicita: PersonaFisicaType | dict,
986
            tipo_bien: str,
987
            valor_avaluo: str,
988
            datos_propietario: DatosPropietarioType | dict,
989
            descripcion: str = None,
990
    ): 
991
        super().__init__({
992
            'Organo': organo,
993
            'Cargo': cargo,
994
            'ExpedienteOficio': expediente_oficio,
995
            'PersonaSolicita': persona_solicita,
996
            'TipoBien': tipo_bien,
997
            'ValorAvaluo': valor_avaluo,
998
            'DatosPropietario': datos_propietario,
999
            'Descripcion': descripcion,
1000
        })
1001
        
1002
1003
class ContratoMutuoType(ScalarMap):
1004
    """
1005
    
1006
    :param autoridad:
1007
    :param tipo_otorgamiento:
1008
    :param persona_solicita:
1009
    :param datos_acreedor:
1010
    :param datos_deudor:
1011
    :param datos_liquidacion:
1012
    :param datos_garantia:
1013
    """
1014
    
1015
    def __init__(
1016
            self,
1017
            autoridad: AutoridadType | dict,
1018
            tipo_otorgamiento: str,
1019
            persona_solicita: PersonaFisicaSimpleType | dict,
1020
            datos_acreedor: DatosAcreedorType | dict | Sequence[DatosAcreedorType | dict],
1021
            datos_deudor: DatosDeudorType | dict | Sequence[DatosDeudorType | dict],
1022
            datos_liquidacion: DatosLiquidacionType | dict | Sequence[DatosLiquidacionType | dict],
1023
            datos_garantia: DatosGarantiaType | dict | Sequence[DatosGarantiaType | dict] = None,
1024
    ): 
1025
        super().__init__({
1026
            'Autoridad': autoridad,
1027
            'TipoOtorgamiento': tipo_otorgamiento,
1028
            'PersonaSolicita': persona_solicita,
1029
            'DatosAcreedor': datos_acreedor,
1030
            'DatosDeudor': datos_deudor,
1031
            'DatosLiquidacion': datos_liquidacion,
1032
            'DatosGarantia': datos_garantia,
1033
        })
1034
        
1035
1036
class ModificacionPatrimonialType(ScalarMap):
1037
    """
1038
    
1039
    :param autoridad:
1040
    :param persona_moral_modifica:
1041
    :param datos_modificacion:
1042
    """
1043
    
1044
    def __init__(
1045
            self,
1046
            autoridad: Autoridad1Type | dict,
1047
            persona_moral_modifica: PersonaMoralModificaType | dict,
1048
            datos_modificacion: DatosModificacionType | dict,
1049
    ): 
1050
        super().__init__({
1051
            'Autoridad': autoridad,
1052
            'PersonaMoralModifica': persona_moral_modifica,
1053
            'DatosModificacion': datos_modificacion,
1054
        })
1055
        
1056
1057
class ConstitucionPmType(ScalarMap):
1058
    """
1059
    
1060
    :param autoridad:
1061
    :param persona_solicita:
1062
    :param persona_moral_constitucion:
1063
    """
1064
    
1065
    def __init__(
1066
            self,
1067
            autoridad: Autoridad1Type | dict,
1068
            persona_solicita: PersonaFisicaType | dict,
1069
            persona_moral_constitucion: PersonaMoralConstType | dict,
1070
    ): 
1071
        super().__init__({
1072
            'Autoridad': autoridad,
1073
            'PersonaSolicita': persona_solicita,
1074
            'PersonaMoralConstitucion': persona_moral_constitucion,
1075
        })
1076
        
1077
1078
class OtorgamientoPoderType(ScalarMap):
1079
    """
1080
    
1081
    :param autoridad:
1082
    :param persona_solicita:
1083
    :param datos_poderdante:
1084
    :param datos_apoderado:
1085
    """
1086
    
1087
    def __init__(
1088
            self,
1089
            autoridad: AutoridadType | dict,
1090
            persona_solicita: PersonaFisicaType | dict,
1091
            datos_poderdante: DatosPoderdanteType | dict | Sequence[DatosPoderdanteType | dict],
1092
            datos_apoderado: DatosApoderadoType | dict | Sequence[DatosApoderadoType | dict],
1093
    ): 
1094
        super().__init__({
1095
            'Autoridad': autoridad,
1096
            'PersonaSolicita': persona_solicita,
1097
            'DatosPoderdante': datos_poderdante,
1098
            'DatosApoderado': datos_apoderado,
1099
        })
1100
        
1101
1102
class DerechosInmuebleType(ScalarMap):
1103
    """
1104
    
1105
    :param organo:
1106
    :param tipo_juicio:
1107
    :param materia:
1108
    :param expediente:
1109
    :param tipo_acto:
1110
    :param datos_inmuebles:
1111
    :param personas_acto:
1112
    :param tipo_acto_otro:
1113
    """
1114
    
1115
    def __init__(
1116
            self,
1117
            organo: str,
1118
            tipo_juicio: str,
1119
            materia: str,
1120
            expediente: str,
1121
            tipo_acto: str,
1122
            datos_inmuebles: DatosInmueblesType | dict,
1123
            personas_acto: PersonasActoType | dict,
1124
            tipo_acto_otro: str = None,
1125
    ): 
1126
        super().__init__({
1127
            'Organo': organo,
1128
            'TipoJuicio': tipo_juicio,
1129
            'Materia': materia,
1130
            'Expediente': expediente,
1131
            'TipoActo': tipo_acto,
1132
            'DatosInmuebles': datos_inmuebles,
1133
            'PersonasActo': personas_acto,
1134
            'TipoActoOtro': tipo_acto_otro,
1135
        })
1136
        
1137
1138
class ActividadType(ScalarMap):
1139
    """
1140
    
1141
    :param derechos_inmuebles:
1142
    :param otorgamiento_poder:
1143
    :param constitucion_personas_morales:
1144
    :param modificacion_patrimonial:
1145
    :param contrato_mutuo_credito:
1146
    :param avaluo:
1147
    """
1148
    
1149
    def __init__(
1150
            self,
1151
            derechos_inmuebles: DerechosInmuebleType | dict = None,
1152
            otorgamiento_poder: OtorgamientoPoderType | dict = None,
1153
            constitucion_personas_morales: ConstitucionPmType | dict = None,
1154
            modificacion_patrimonial: ModificacionPatrimonialType | dict = None,
1155
            contrato_mutuo_credito: ContratoMutuoType | dict = None,
1156
            avaluo: AvaluoType | dict = None,
1157
    ): 
1158
        super().__init__({
1159
            'DerechosInmuebles': derechos_inmuebles,
1160
            'OtorgamientoPoder': otorgamiento_poder,
1161
            'ConstitucionPersonasMorales': constitucion_personas_morales,
1162
            'ModificacionPatrimonial': modificacion_patrimonial,
1163
            'ContratoMutuoCredito': contrato_mutuo_credito,
1164
            'Avaluo': avaluo,
1165
        })
1166
        
1167
1168
class AvisoType(ScalarMap):
1169
    """
1170
    
1171
    :param referencia_aviso:
1172
    :param prioridad:
1173
    :param alerta:
1174
    :param detalle_operaciones:
1175
    :param modificatorio:
1176
    """
1177
    
1178
    def __init__(
1179
            self,
1180
            referencia_aviso: str,
1181
            prioridad: str,
1182
            alerta: AlertaType | dict,
1183
            detalle_operaciones: OperacionesType | dict,
1184
            modificatorio: ModificatorioType | dict = None,
1185
    ): 
1186
        super().__init__({
1187
            'ReferenciaAviso': referencia_aviso,
1188
            'Prioridad': prioridad,
1189
            'Alerta': alerta,
1190
            'DetalleOperaciones': detalle_operaciones,
1191
            'Modificatorio': modificatorio,
1192
        })
1193
        
1194
1195
class ModificatorioType(ScalarMap):
1196
    """
1197
    
1198
    :param folio_modificacion:
1199
    :param descripcion_modificacion:
1200
    """
1201
    
1202
    def __init__(
1203
            self,
1204
            folio_modificacion: str,
1205
            descripcion_modificacion: str,
1206
    ): 
1207
        super().__init__({
1208
            'FolioModificacion': folio_modificacion,
1209
            'DescripcionModificacion': descripcion_modificacion,
1210
        })
1211
        
1212
1213
class OperacionType(ScalarMap):
1214
    """
1215
    
1216
    :param fecha_operacion:
1217
    :param tipo_actividad:
1218
    """
1219
    
1220
    def __init__(
1221
            self,
1222
            fecha_operacion: date,
1223
            tipo_actividad: ActividadType | dict,
1224
    ): 
1225
        super().__init__({
1226
            'FechaOperacion': fecha_operacion,
1227
            'TipoActividad': tipo_actividad,
1228
        })
1229
        
1230
1231
class OperacionesType(ScalarMap):
1232
    """
1233
    
1234
    :param datos_operacion:
1235
    """
1236
    
1237
    def __init__(
1238
            self,
1239
            datos_operacion: OperacionType | dict | Sequence[OperacionType | dict],
1240
    ): 
1241
        super().__init__({
1242
            'DatosOperacion': datos_operacion,
1243
        })
1244
        
1245
1246
class ArchivoType(ScalarMap):
1247
    """
1248
    
1249
    :param informe:
1250
    """
1251
    
1252
    def __init__(
1253
            self,
1254
            informe: InformeType | dict | Sequence[InformeType | dict],
1255
    ): 
1256
        super().__init__({
1257
            'Informe': informe,
1258
        })
1259
        
1260
1261
class InformeType(ScalarMap):
1262
    """
1263
    
1264
    :param mes_reportado:
1265
    :param tribunal_dependencia:
1266
    :param aviso:
1267
    :param version:
1268
    """
1269
    
1270
    def __init__(
1271
            self,
1272
            mes_reportado: str,
1273
            tribunal_dependencia: TribunalType | dict,
1274
            aviso: AvisoType | dict | Sequence[AvisoType | dict] = None,
1275
            version: str = None,
1276
    ): 
1277
        super().__init__({
1278
            'MesReportado': mes_reportado,
1279
            'TribunalDependencia': tribunal_dependencia,
1280
            'Aviso': aviso,
1281
            'Version': version,
1282
        })
1283
        
1284
1285
class RepresentanteApoderadoType(ScalarMap):
1286
    """
1287
    
1288
    :param nombre:
1289
    :param apellido_paterno:
1290
    :param apellido_materno:
1291
    :param fecha_nacimiento:
1292
    :param rfc:
1293
    :param curp:
1294
    """
1295
    
1296
    def __init__(
1297
            self,
1298
            nombre: str,
1299
            apellido_paterno: str,
1300
            apellido_materno: str,
1301
            fecha_nacimiento: date = None,
1302
            rfc: str = None,
1303
            curp: str = None,
1304
    ): 
1305
        super().__init__({
1306
            'Nombre': nombre,
1307
            'ApellidoPaterno': apellido_paterno,
1308
            'ApellidoMaterno': apellido_materno,
1309
            'FechaNacimiento': fecha_nacimiento,
1310
            'Rfc': rfc,
1311
            'Curp': curp,
1312
        })
1313
        
1314
1315
class FideicomisoSimpleType(ScalarMap):
1316
    """
1317
    
1318
    :param denominacion_razon:
1319
    :param rfc:
1320
    :param identificador_fideicomiso:
1321
    """
1322
    
1323
    def __init__(
1324
            self,
1325
            denominacion_razon: str,
1326
            rfc: str = None,
1327
            identificador_fideicomiso: str = None,
1328
    ): 
1329
        super().__init__({
1330
            'DenominacionRazon': denominacion_razon,
1331
            'Rfc': rfc,
1332
            'IdentificadorFideicomiso': identificador_fideicomiso,
1333
        })
1334
        
1335
1336
class PersonaFisicaSimpleType(ScalarMap):
1337
    """
1338
    
1339
    :param nombre:
1340
    :param apellido_paterno:
1341
    :param apellido_materno:
1342
    :param pais_nacionalidad:
1343
    :param fecha_nacimiento:
1344
    :param rfc:
1345
    :param curp:
1346
    """
1347
    
1348
    def __init__(
1349
            self,
1350
            nombre: str,
1351
            apellido_paterno: str,
1352
            apellido_materno: str,
1353
            pais_nacionalidad: str,
1354
            fecha_nacimiento: date = None,
1355
            rfc: str = None,
1356
            curp: str = None,
1357
    ): 
1358
        super().__init__({
1359
            'Nombre': nombre,
1360
            'ApellidoPaterno': apellido_paterno,
1361
            'ApellidoMaterno': apellido_materno,
1362
            'PaisNacionalidad': pais_nacionalidad,
1363
            'FechaNacimiento': fecha_nacimiento,
1364
            'Rfc': rfc,
1365
            'Curp': curp,
1366
        })
1367
        
1368
1369
class PersonaMoralSimpleType(ScalarMap):
1370
    """
1371
    
1372
    :param denominacion_razon:
1373
    :param pais_nacionalidad:
1374
    :param fecha_constitucion:
1375
    :param rfc:
1376
    """
1377
    
1378
    def __init__(
1379
            self,
1380
            denominacion_razon: str,
1381
            pais_nacionalidad: str,
1382
            fecha_constitucion: date = None,
1383
            rfc: str = None,
1384
    ): 
1385
        super().__init__({
1386
            'DenominacionRazon': denominacion_razon,
1387
            'PaisNacionalidad': pais_nacionalidad,
1388
            'FechaConstitucion': fecha_constitucion,
1389
            'Rfc': rfc,
1390
        })
1391
        
1392
1393
class Administrativo1Type(ScalarMap):
1394
    """
1395
    
1396
    :param organo:
1397
    :param cargo:
1398
    :param instrumento_publico_oficio:
1399
    """
1400
    
1401
    def __init__(
1402
            self,
1403
            organo: str,
1404
            cargo: str,
1405
            instrumento_publico_oficio: str,
1406
    ): 
1407
        super().__init__({
1408
            'Organo': organo,
1409
            'Cargo': cargo,
1410
            'InstrumentoPublicoOficio': instrumento_publico_oficio,
1411
        })
1412
        
1413
1414
class Archivo(ArchivoType, XElement):
1415
    tag = '{http://www.uif.shcp.gob.mx/recepcion/fes}archivo'
1416
1417