xtrack 0.73.4__tar.gz → 0.73.5__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 (265) hide show
  1. {xtrack-0.73.4/xtrack.egg-info → xtrack-0.73.5}/PKG-INFO +1 -1
  2. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_line.py +157 -0
  3. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_new_madloader.py +2 -0
  4. xtrack-0.73.5/xtrack/_version.py +1 -0
  5. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements.py +0 -9
  6. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/line.py +44 -0
  7. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_parser/loader.py +2 -2
  8. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_parser/madx.lark +1 -1
  9. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_writer.py +2 -2
  10. {xtrack-0.73.4 → xtrack-0.73.5/xtrack.egg-info}/PKG-INFO +1 -1
  11. xtrack-0.73.4/xtrack/_version.py +0 -1
  12. {xtrack-0.73.4 → xtrack-0.73.5}/LICENSE +0 -0
  13. {xtrack-0.73.4 → xtrack-0.73.5}/MANIFEST.in +0 -0
  14. {xtrack-0.73.4 → xtrack-0.73.5}/README.md +0 -0
  15. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/__init__.py +0 -0
  16. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/base_classes.py +0 -0
  17. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/BB6D.py +0 -0
  18. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  19. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/__init__.py +0 -0
  20. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/beambeam.py +0 -0
  21. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/boost.py +0 -0
  22. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  23. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  24. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/qgauss.py +0 -0
  25. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/slicing.py +0 -0
  26. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/be_beamfields/spacecharge.py +0 -0
  27. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/elements.py +0 -0
  28. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/line.py +0 -0
  29. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/mathlibs.py +0 -0
  30. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/particles.py +0 -0
  31. {xtrack-0.73.4 → xtrack-0.73.5}/ducktrack/temp_pyparticles.py +0 -0
  32. {xtrack-0.73.4 → xtrack-0.73.5}/pyproject.toml +0 -0
  33. {xtrack-0.73.4 → xtrack-0.73.5}/setup.cfg +0 -0
  34. {xtrack-0.73.4 → xtrack-0.73.5}/setup.py +0 -0
  35. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_acceleration.py +0 -0
  36. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_amplitude_detuning.py +0 -0
  37. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  38. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_apertures.py +0 -0
  39. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_attr_replicas_and_slices.py +0 -0
  40. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_cavity_absolute_time.py +0 -0
  41. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_chromatic_functions_vs_madx.py +0 -0
  42. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_coasting.py +0 -0
  43. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_collective_tracker.py +0 -0
  44. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_collimation.py +0 -0
  45. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_element_characterization_functions.py +0 -0
  46. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_element_internal_record.py +0 -0
  47. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_elements.py +0 -0
  48. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_elements_classflags.py +0 -0
  49. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_elements_thick.py +0 -0
  50. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_environment.py +0 -0
  51. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  52. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  53. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_footprint.py +0 -0
  54. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_freeze_longitudinal.py +0 -0
  55. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_full_rings.py +0 -0
  56. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_h6_sps_beamline.py +0 -0
  57. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_hvkick.py +0 -0
  58. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_ions.py +0 -0
  59. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_legacy_multiline_to_env.py +0 -0
  60. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_lhc_env.py +0 -0
  61. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_lhc_match_phase_15.py +0 -0
  62. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_lumi.py +0 -0
  63. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_mad_writer.py +0 -0
  64. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_madloader.py +0 -0
  65. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_madnginterface.py +0 -0
  66. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_and_track_from_element.py +0 -0
  67. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_coupling_knob.py +0 -0
  68. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_nested.py +0 -0
  69. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_optics_and_ip_knob.py +0 -0
  70. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  71. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_orbit_bump.py +0 -0
  72. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_match_tune_chroma_cminus.py +0 -0
  73. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_monitor.py +0 -0
  74. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_multiline.py +0 -0
  75. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_multisetter.py +0 -0
  76. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_multispecies.py +0 -0
  77. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_particles_api.py +0 -0
  78. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
  79. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_pipeline.py +0 -0
  80. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_prebuild_kernels.py +0 -0
  81. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_ps_against_ptc.py +0 -0
  82. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_ps_multiturn_twiss.py +0 -0
  83. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_psb_chicane.py +0 -0
  84. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_pyht_interface.py +0 -0
  85. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_radial_steering.py +0 -0
  86. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_radiation.py +0 -0
  87. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_radiation_equilibrium_emittances.py +0 -0
  88. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_random_gen.py +0 -0
  89. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_random_gen_exp.py +0 -0
  90. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_random_gen_gauss.py +0 -0
  91. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_random_gen_ruth.py +0 -0
  92. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_rbend_rbarc.py +0 -0
  93. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_rf_track.py +0 -0
  94. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_rotation_signs.py +0 -0
  95. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_second_order_taylor_map.py +0 -0
  96. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_seeds.py +0 -0
  97. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_slice_and_insert_with_replicas.py +0 -0
  98. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_slice_elements.py +0 -0
  99. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_slicing.py +0 -0
  100. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  101. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_spacecharge_in_ring.py +0 -0
  102. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_sps_thick.py +0 -0
  103. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_survey.py +0 -0
  104. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_tapering.py +0 -0
  105. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_thick_lhc.py +0 -0
  106. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_tilt_shifts.py +0 -0
  107. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_tracker.py +0 -0
  108. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_trajectory_correcton.py +0 -0
  109. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_twiss.py +0 -0
  110. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_twiss_vs_madx_psb.py +0 -0
  111. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_vs_madx.py +0 -0
  112. {xtrack-0.73.4 → xtrack-0.73.5}/tests/test_xmask_orbit_correction.py +0 -0
  113. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/__init__.py +0 -0
  114. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/__init__.py +0 -0
  115. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  116. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  117. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  118. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/lhc_match/__init__.py +0 -0
  119. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  120. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  121. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  122. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/base_element.py +0 -0
  123. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/__init__.py +0 -0
  124. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures.py +0 -0
  125. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  126. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  127. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  128. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  129. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  130. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  131. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/beam_interaction.py +0 -0
  132. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/bend.h +0 -0
  133. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  134. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  135. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  136. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift.h +0 -0
  137. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift_elem.h +0 -0
  138. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  139. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  140. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  141. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  142. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  143. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/elens.h +0 -0
  144. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  145. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  146. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  147. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  148. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  149. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  150. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  151. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  152. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  153. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  154. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  155. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  156. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  157. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
  158. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  159. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  160. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
  161. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  162. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  163. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  164. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
  165. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  166. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  167. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  168. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  169. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  170. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  171. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
  172. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  173. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  174. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  175. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  176. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
  177. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
  178. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
  179. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
  180. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  181. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  182. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  183. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  184. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  185. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  186. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  187. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/wire.h +0 -0
  188. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  189. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  190. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  191. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  192. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/exciter.py +0 -0
  193. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/rft_element.py +0 -0
  194. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/slice_elements.py +0 -0
  195. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  196. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/environment.py +0 -0
  197. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/footprint.py +0 -0
  198. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/general.py +0 -0
  199. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/headers/atomicadd.h +0 -0
  200. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/headers/checks.h +0 -0
  201. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/headers/constants.h +0 -0
  202. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/headers/particle_states.h +0 -0
  203. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/headers/synrad_spectrum.h +0 -0
  204. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/internal_record.py +0 -0
  205. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/json.py +0 -0
  206. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/linear_normal_form.py +0 -0
  207. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/loss_location_refinement/__init__.py +0 -0
  208. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  209. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/lumi.py +0 -0
  210. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_loader.py +0 -0
  211. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_parser/__init__.py +0 -0
  212. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_parser/env_writer.py +0 -0
  213. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/mad_parser/parse.py +0 -0
  214. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/madng_interface.py +0 -0
  215. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/match.py +0 -0
  216. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/__init__.py +0 -0
  217. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/beam_position_monitor.h +0 -0
  218. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/beam_position_monitor.py +0 -0
  219. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/beam_profile_monitor.h +0 -0
  220. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/beam_profile_monitor.py +0 -0
  221. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/beam_size_monitor.h +0 -0
  222. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/beam_size_monitor.py +0 -0
  223. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/last_turns_monitor.h +0 -0
  224. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/last_turns_monitor.py +0 -0
  225. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/particles_monitor.h +0 -0
  226. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/monitors/particles_monitor.py +0 -0
  227. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/multiline.py +0 -0
  228. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/multiline_legacy/__init__.py +0 -0
  229. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
  230. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  231. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/multisetter/__init__.py +0 -0
  232. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/multisetter/multisetter.py +0 -0
  233. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/particles/__init__.py +0 -0
  234. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/particles/constants.py +0 -0
  235. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/particles/particles.py +0 -0
  236. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/particles/rng_src/base_rng.h +0 -0
  237. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/particles/rng_src/particles_rng.h +0 -0
  238. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/pipeline/__init__.py +0 -0
  239. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/pipeline/core.py +0 -0
  240. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/pipeline/manager.py +0 -0
  241. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/pipeline/multitracker.py +0 -0
  242. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/progress_indicator.py +0 -0
  243. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/__init__.py +0 -0
  244. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_generators.py +0 -0
  245. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_src/exponential.h +0 -0
  246. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  247. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_src/normal.h +0 -0
  248. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_src/rutherford.h +0 -0
  249. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_src/uniform.h +0 -0
  250. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/random/random_src/uniform_accurate.h +0 -0
  251. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/slicing.py +0 -0
  252. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/survey.py +0 -0
  253. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/synctime.py +0 -0
  254. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/tapering.py +0 -0
  255. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/targets.py +0 -0
  256. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/tracker.py +0 -0
  257. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/tracker_data.py +0 -0
  258. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/tracker_src/tracker.h +0 -0
  259. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/trajectory_correction.py +0 -0
  260. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/twiss.py +0 -0
  261. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack/twissplot.py +0 -0
  262. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack.egg-info/SOURCES.txt +0 -0
  263. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack.egg-info/dependency_links.txt +0 -0
  264. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack.egg-info/requires.txt +0 -0
  265. {xtrack-0.73.4 → xtrack-0.73.5}/xtrack.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.73.4
3
+ Version: 0.73.5
4
4
  Summary: Tracking library for particle accelerators
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xtrack
@@ -5,6 +5,7 @@
5
5
 
6
6
  import pathlib
7
7
  import pickle
8
+ import math
8
9
 
9
10
  import numpy as np
10
11
  import pytest
@@ -1138,3 +1139,159 @@ def test_line_table_unique_names():
1138
1139
  if name == '_end_point': continue
1139
1140
  assert line[name] == line[env_name]
1140
1141
 
1142
+
1143
+ def test_extend_knl_ksl():
1144
+
1145
+ classes_to_check = ['Bend', 'Quadrupole', 'Sextupole', 'Octupole', 'Solenoid',
1146
+ 'Multipole']
1147
+
1148
+ for cc in classes_to_check:
1149
+
1150
+ nn1 = 'test1_'+cc.lower()
1151
+ nn2 = 'test2_'+cc.lower()
1152
+ env = xt.Environment()
1153
+ env.new(nn1, cc, length=10, knl=[
1154
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], ksl=[3, 2, 1])
1155
+ env.new(nn2, cc, length=10, ksl=[
1156
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], knl=[3, 2, 1], order=11)
1157
+
1158
+ assert env[nn1].__class__.__name__ == cc
1159
+ assert env[nn1].order == 11
1160
+ assert len(env[nn1].knl) == 12
1161
+ assert len(env[nn1].ksl) == 12
1162
+ xo.assert_allclose(env[nn1].knl, [1, 2, 3, 4, 5,
1163
+ 6, 7, 8, 9, 10, 11, 12], rtol=0, atol=1e-15)
1164
+ xo.assert_allclose(env[nn1].ksl, [3, 2, 1, 0, 0,
1165
+ 0, 0, 0, 0, 0, 0, 0], rtol=0, atol=1e-15)
1166
+ xo.assert_allclose(env[nn1].inv_factorial_order,
1167
+ 1/math.factorial(11), rtol=0, atol=1e-15)
1168
+
1169
+ assert env[nn2].__class__.__name__ == cc
1170
+ assert env[nn2].order == 11
1171
+ assert len(env[nn2].ksl) == 12
1172
+ assert len(env[nn2].knl) == 12
1173
+ xo.assert_allclose(env[nn2].ksl, [1, 2, 3, 4, 5,
1174
+ 6, 7, 8, 9, 10, 11, 12], rtol=0, atol=1e-15)
1175
+ xo.assert_allclose(env[nn2].knl, [3, 2, 1, 0, 0,
1176
+ 0, 0, 0, 0, 0, 0, 0], rtol=0, atol=1e-15)
1177
+ xo.assert_allclose(env[nn2].inv_factorial_order,
1178
+ 1/math.factorial(11), rtol=0, atol=1e-15)
1179
+
1180
+ env.vars.default_to_zero = True
1181
+ line = env.new_line(components=[
1182
+ env.new('b1', xt.Bend, length=1, knl=[
1183
+ 'a', 'b', 'c'], ksl=['d', 'e', 'f']),
1184
+ env.new('q1', xt.Quadrupole, length=1, knl=[
1185
+ 'a', 'b', 'c'], ksl=['d', 'e', 'f']),
1186
+ env.new('s1', xt.Sextupole, length=1, knl=[
1187
+ 'a', 'b', 'c'], ksl=['d', 'e', 'f']),
1188
+ env.new('o1', xt.Octupole, length=1, knl=[
1189
+ 'a', 'b', 'c'], ksl=['d', 'e', 'f']),
1190
+ env.new('s2', xt.Solenoid, length=1, knl=[
1191
+ 'a', 'b', 'c'], ksl=['d', 'e', 'f']),
1192
+ env.new('m1', xt.Multipole, length=1, knl=[
1193
+ 'a', 'b', 'c'], ksl=['d', 'e', 'f']),
1194
+ ])
1195
+
1196
+ env['a'] = 3.
1197
+ env['b'] = 2.
1198
+ env['c'] = 1.
1199
+ env['d'] = 4.
1200
+ env['e'] = 5.
1201
+ env['f'] = 6.
1202
+
1203
+ element_names = ['b1', 'q1']
1204
+ order = 10
1205
+
1206
+ line.extend_knl_ksl(order=order, element_names=element_names)
1207
+
1208
+ assert line['b1'].order == order
1209
+ assert line['q1'].order == order
1210
+ assert line['s1'].order == 5
1211
+ assert line['o1'].order == 5
1212
+ assert line['s2'].order == 5
1213
+ assert line['m1'].order == 2
1214
+
1215
+ xo.assert_allclose(line['b1'].inv_factorial_order,
1216
+ 1/math.factorial(order), rtol=0, atol=1e-15)
1217
+ xo.assert_allclose(line['q1'].inv_factorial_order,
1218
+ 1/math.factorial(order), rtol=0, atol=1e-15)
1219
+ xo.assert_allclose(line['s1'].inv_factorial_order,
1220
+ 1/math.factorial(5), rtol=0, atol=1e-15)
1221
+ xo.assert_allclose(line['o1'].inv_factorial_order,
1222
+ 1/math.factorial(5), rtol=0, atol=1e-15)
1223
+ xo.assert_allclose(line['s2'].inv_factorial_order,
1224
+ 1/math.factorial(5), rtol=0, atol=1e-15)
1225
+ xo.assert_allclose(line['m1'].inv_factorial_order,
1226
+ 1/math.factorial(2), rtol=0, atol=1e-15)
1227
+
1228
+ xo.assert_allclose(line['b1'].knl, [3., 2., 1., 0.,
1229
+ 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1230
+ xo.assert_allclose(line['b1'].ksl, [4., 5., 6., 0.,
1231
+ 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1232
+ xo.assert_allclose(line['q1'].knl, [3., 2., 1., 0.,
1233
+ 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1234
+ xo.assert_allclose(line['q1'].ksl, [4., 5., 6., 0.,
1235
+ 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1236
+ xo.assert_allclose(line['s1'].knl, [3., 2., 1.,
1237
+ 0., 0., 0.], rtol=0, atol=1e-15)
1238
+ xo.assert_allclose(line['s1'].ksl, [4., 5., 6.,
1239
+ 0., 0., 0.], rtol=0, atol=1e-15)
1240
+ xo.assert_allclose(line['o1'].knl, [3., 2., 1.,
1241
+ 0., 0., 0.], rtol=0, atol=1e-15)
1242
+ xo.assert_allclose(line['o1'].ksl, [4., 5., 6.,
1243
+ 0., 0., 0.], rtol=0, atol=1e-15)
1244
+ xo.assert_allclose(line['s2'].knl, [3., 2., 1.,
1245
+ 0., 0., 0.], rtol=0, atol=1e-15)
1246
+ xo.assert_allclose(line['s2'].ksl, [4., 5., 6.,
1247
+ 0., 0., 0.], rtol=0, atol=1e-15)
1248
+ xo.assert_allclose(line['m1'].knl, [3., 2., 1.], rtol=0, atol=1e-15)
1249
+ xo.assert_allclose(line['m1'].ksl, [4., 5., 6.], rtol=0, atol=1e-15)
1250
+
1251
+ line.extend_knl_ksl(order=11)
1252
+
1253
+ assert line['b1'].order == 11
1254
+ assert line['q1'].order == 11
1255
+ assert line['s1'].order == 11
1256
+ assert line['o1'].order == 11
1257
+ assert line['s2'].order == 11
1258
+ assert line['m1'].order == 11
1259
+ assert line['b1'].inv_factorial_order == 1/math.factorial(11)
1260
+ assert line['q1'].inv_factorial_order == 1/math.factorial(11)
1261
+ assert line['s1'].inv_factorial_order == 1/math.factorial(11)
1262
+ assert line['o1'].inv_factorial_order == 1/math.factorial(11)
1263
+ assert line['s2'].inv_factorial_order == 1/math.factorial(11)
1264
+ assert line['m1'].inv_factorial_order == 1/math.factorial(11)
1265
+ xo.assert_allclose(line['b1'].knl, [3., 2., 1., 0.,
1266
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1267
+ xo.assert_allclose(line['b1'].ksl, [4., 5., 6., 0.,
1268
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1269
+ xo.assert_allclose(line['q1'].knl, [3., 2., 1., 0.,
1270
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1271
+ xo.assert_allclose(line['q1'].ksl, [4., 5., 6., 0.,
1272
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1273
+ xo.assert_allclose(line['s1'].knl, [3., 2., 1., 0.,
1274
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1275
+ xo.assert_allclose(line['s1'].ksl, [4., 5., 6., 0.,
1276
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1277
+ xo.assert_allclose(line['o1'].knl, [3., 2., 1., 0.,
1278
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1279
+ xo.assert_allclose(line['o1'].ksl, [4., 5., 6., 0.,
1280
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1281
+ xo.assert_allclose(line['s2'].knl, [3., 2., 1., 0.,
1282
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1283
+ xo.assert_allclose(line['s2'].ksl, [4., 5., 6., 0.,
1284
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1285
+ xo.assert_allclose(line['m1'].knl, [3., 2., 1., 0.,
1286
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1287
+ xo.assert_allclose(line['m1'].ksl, [4., 5., 6., 0.,
1288
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1289
+
1290
+ # test an expression
1291
+ line['b'] = 100
1292
+ line['f'] = 200
1293
+
1294
+ xo.assert_allclose(line['o1'].knl, [3., 100., 1., 0.,
1295
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
1296
+ xo.assert_allclose(line['o1'].ksl, [4., 5., 200., 0.,
1297
+ 0., 0., 0., 0., 0., 0., 0., 0.], rtol=0, atol=1e-15)
@@ -19,6 +19,7 @@ def test_simple_parser():
19
19
  if (version>=50401){option,-rbarc;}; ! to be ignored
20
20
 
21
21
  third = 1 / 3;
22
+ power = 3^4;
22
23
  hello := third * twopi;
23
24
  mb.l = 1;
24
25
  qd.l = 0.5;
@@ -45,6 +46,7 @@ def test_simple_parser():
45
46
  expected: MadxOutputType = {
46
47
  'vars': {
47
48
  'third': {'deferred': False, 'expr': '(1.0 / 3.0)'},
49
+ 'power': {'deferred': False, 'expr': '(3.0 ** 4.0)'},
48
50
  'hello': {'deferred': True, 'expr': '(third * twopi)'},
49
51
  'mb.l': {'deferred': False, 'expr': 1.0},
50
52
  'qd.l': {'deferred': False, 'expr': 0.5},
@@ -0,0 +1 @@
1
+ __version__ = '0.73.5'
@@ -819,7 +819,6 @@ class Bend(BeamElement):
819
819
 
820
820
  if model is not None:
821
821
  self.model = model
822
- self.order = order
823
822
 
824
823
  def to_dict(self, copy_to_cpu=True):
825
824
  out = super().to_dict(copy_to_cpu=copy_to_cpu)
@@ -995,8 +994,6 @@ class Sextupole(BeamElement):
995
994
 
996
995
  self.xoinitialize(**kwargs)
997
996
 
998
- self.order = order
999
-
1000
997
  def to_dict(self, copy_to_cpu=True):
1001
998
  out = super().to_dict(copy_to_cpu=copy_to_cpu)
1002
999
 
@@ -1089,8 +1086,6 @@ class Octupole(BeamElement):
1089
1086
 
1090
1087
  self.xoinitialize(**kwargs)
1091
1088
 
1092
- self.order = order
1093
-
1094
1089
  def to_dict(self, copy_to_cpu=True):
1095
1090
  out = super().to_dict(copy_to_cpu=copy_to_cpu)
1096
1091
 
@@ -1180,8 +1175,6 @@ class Quadrupole(BeamElement):
1180
1175
 
1181
1176
  self.xoinitialize(**kwargs)
1182
1177
 
1183
- self.order = order
1184
-
1185
1178
  def to_dict(self, copy_to_cpu=True):
1186
1179
  out = super().to_dict(copy_to_cpu=copy_to_cpu)
1187
1180
 
@@ -1316,8 +1309,6 @@ class Solenoid(BeamElement):
1316
1309
 
1317
1310
  self.xoinitialize(**kwargs)
1318
1311
 
1319
- self.order = order
1320
-
1321
1312
  @property
1322
1313
  def order(self):
1323
1314
  return self._order
@@ -3203,6 +3203,50 @@ class Line:
3203
3203
  self._check_valid_tracker()
3204
3204
  stop_internal_logging_for_elements_of_type(self.tracker, element_type)
3205
3205
 
3206
+ def extend_knl_ksl(self, order, element_names=None):
3207
+
3208
+ """
3209
+ Extend the order of the knl and ksl attributes of the elements.
3210
+
3211
+ Parameters
3212
+ ----------
3213
+ order: int
3214
+ New order of the knl and ksl attributes.
3215
+ element_names: list of str
3216
+ Names of the elements to extend. If None, all elements having `knl`
3217
+ and `ksl` attributes are extended.
3218
+
3219
+ """
3220
+
3221
+ self.discard_tracker()
3222
+
3223
+ if element_names is None:
3224
+ element_names = []
3225
+ for nn in self.element_names:
3226
+ if hasattr(self.get(nn), 'knl'):
3227
+ element_names.append(nn)
3228
+
3229
+ for nn in element_names:
3230
+ if self.get(nn).order > order:
3231
+ raise ValueError(f'Order of element {nn} is smaller than {order}')
3232
+
3233
+ for nn in element_names:
3234
+ ee = self.get(nn)
3235
+
3236
+ if ee.order == order:
3237
+ continue
3238
+
3239
+ new_knl = [vv for vv in ee.knl] + [0] * (order - len(ee.knl) + 1)
3240
+ new_ksl = [vv for vv in ee.ksl] + [0] * (order - len(ee.ksl) + 1)
3241
+
3242
+ dct = ee.to_dict()
3243
+ dct.pop('order', None)
3244
+ dct['knl'] = new_knl
3245
+ dct['ksl'] = new_ksl
3246
+
3247
+ new_ee = ee.__class__.from_dict(dct, _buffer=ee._buffer)
3248
+ self.env.elements[nn] = new_ee
3249
+
3206
3250
  def remove_markers(self, inplace=True, keep=None):
3207
3251
  """
3208
3252
  Remove markers from the line
@@ -298,14 +298,14 @@ class MadxLoader:
298
298
 
299
299
 
300
300
  if (isinstance(self.env[name], BeamElement) and not self.env[name].isthick
301
- and length and not isinstance(self.env[name], xt.Marker)):
301
+ and length and not isinstance(self.env[name], xt.Marker)):
302
302
  drift_name = f'drift_{name}'
303
303
  self.env.new(drift_name, 'Drift', length=f'({length}) / 2')
304
304
  name = builder.new_line([drift_name, name, drift_name])
305
305
  builder.place(name, **el_params)
306
306
  else:
307
307
  if (isinstance(self.env[parent], BeamElement) and not self.env[parent].isthick
308
- and length and not isinstance(self.env[parent], xt.Marker)):
308
+ and length and not isinstance(self.env[parent], xt.Marker)):
309
309
  drift_name = f'{name}_drift'
310
310
  self.env.new(drift_name, 'Drift', force=True, length=f'({length}) / 2') # Not sure why `force` is needed
311
311
  at, from_ = el_params.pop('at', None), el_params.pop('from_', None)
@@ -96,7 +96,7 @@ _ENDSEQUENCE: "endsequence"i
96
96
  _SEQEDIT: "seqedit"i
97
97
  _ENDEDIT: "endedit"i
98
98
  _LINE: "line"i
99
- NAME: /[A-z_\\.][A-z0-9_\\.%]*/
99
+ NAME: /[A-Za-z_\\.][A-Za-z0-9_\\.%]*/
100
100
  STRING: /"[^"]*"/
101
101
  _COMMENT: "!" /[^\n]*/
102
102
  | "//" /[^\n]*/
@@ -284,7 +284,7 @@ def to_madx_sequence(line, name='seq', mode='sequence'):
284
284
  elements_str = ""
285
285
  for nn in line.element_names:
286
286
  el = line[nn]
287
- el_str = xsuite_to_mad_conveters[type(el)](nn, line)
287
+ el_str = xsuite_to_mad_conveters[el.__class__](nn, line)
288
288
  elements_str += f"{nn}: {el_str};\n"
289
289
  line_str = f'{name}: line=(' + ', '.join(line.element_names) + ');'
290
290
  machine_str = elements_str + line_str
@@ -307,7 +307,7 @@ def to_madx_sequence(line, name='seq', mode='sequence'):
307
307
 
308
308
  for nn in line.element_names:
309
309
  el = line.element_dict[nn]
310
- el_str = xsuite_to_mad_conveters[type(el)](nn, line)
310
+ el_str = xsuite_to_mad_conveters[el.__class__](nn, line)
311
311
  if nn + '_tilt_entry' in line.element_dict:
312
312
  el_str += ", " + mad_assignment('tilt',
313
313
  _ge(line.element_refs[nn + '_tilt_entry'].angle) / 180. * np.pi)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.73.4
3
+ Version: 0.73.5
4
4
  Summary: Tracking library for particle accelerators
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xtrack
@@ -1 +0,0 @@
1
- __version__ = '0.73.4'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes