syned 1.0.47__py3-none-any.whl

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 (54) hide show
  1. syned/__init__.py +0 -0
  2. syned/__test/__init__.py +46 -0
  3. syned/__test/test.py +28 -0
  4. syned/beamline/__init__.py +1 -0
  5. syned/beamline/beamline.py +155 -0
  6. syned/beamline/beamline_element.py +76 -0
  7. syned/beamline/element_coordinates.py +199 -0
  8. syned/beamline/optical_element.py +47 -0
  9. syned/beamline/optical_element_with_surface_shape.py +126 -0
  10. syned/beamline/optical_elements/__init__.py +1 -0
  11. syned/beamline/optical_elements/absorbers/__init__.py +0 -0
  12. syned/beamline/optical_elements/absorbers/absorber.py +21 -0
  13. syned/beamline/optical_elements/absorbers/beam_stopper.py +64 -0
  14. syned/beamline/optical_elements/absorbers/filter.py +61 -0
  15. syned/beamline/optical_elements/absorbers/holed_filter.py +67 -0
  16. syned/beamline/optical_elements/absorbers/slit.py +81 -0
  17. syned/beamline/optical_elements/crystals/__init__.py +1 -0
  18. syned/beamline/optical_elements/crystals/crystal.py +70 -0
  19. syned/beamline/optical_elements/gratings/__init__.py +1 -0
  20. syned/beamline/optical_elements/gratings/grating.py +279 -0
  21. syned/beamline/optical_elements/ideal_elements/__init__.py +1 -0
  22. syned/beamline/optical_elements/ideal_elements/ideal_element.py +16 -0
  23. syned/beamline/optical_elements/ideal_elements/ideal_fzp.py +183 -0
  24. syned/beamline/optical_elements/ideal_elements/ideal_lens.py +54 -0
  25. syned/beamline/optical_elements/ideal_elements/screen.py +16 -0
  26. syned/beamline/optical_elements/mirrors/__init__.py +1 -0
  27. syned/beamline/optical_elements/mirrors/mirror.py +39 -0
  28. syned/beamline/optical_elements/multilayers/__init__.py +46 -0
  29. syned/beamline/optical_elements/multilayers/multilayer.py +45 -0
  30. syned/beamline/optical_elements/refractors/__init__.py +1 -0
  31. syned/beamline/optical_elements/refractors/crl.py +79 -0
  32. syned/beamline/optical_elements/refractors/interface.py +61 -0
  33. syned/beamline/optical_elements/refractors/lens.py +105 -0
  34. syned/beamline/shape.py +2803 -0
  35. syned/storage_ring/__init__.py +1 -0
  36. syned/storage_ring/electron_beam.py +804 -0
  37. syned/storage_ring/empty_light_source.py +40 -0
  38. syned/storage_ring/light_source.py +90 -0
  39. syned/storage_ring/magnetic_structure.py +8 -0
  40. syned/storage_ring/magnetic_structures/__init__.py +1 -0
  41. syned/storage_ring/magnetic_structures/bending_magnet.py +329 -0
  42. syned/storage_ring/magnetic_structures/insertion_device.py +169 -0
  43. syned/storage_ring/magnetic_structures/undulator.py +413 -0
  44. syned/storage_ring/magnetic_structures/wiggler.py +27 -0
  45. syned/syned_object.py +264 -0
  46. syned/util/__init__.py +22 -0
  47. syned/util/json_tools.py +198 -0
  48. syned/widget/__init__.py +0 -0
  49. syned/widget/widget_decorator.py +67 -0
  50. syned-1.0.47.dist-info/METADATA +88 -0
  51. syned-1.0.47.dist-info/RECORD +54 -0
  52. syned-1.0.47.dist-info/WHEEL +5 -0
  53. syned-1.0.47.dist-info/licenses/LICENSE +20 -0
  54. syned-1.0.47.dist-info/top_level.txt +1 -0
syned/util/__init__.py ADDED
@@ -0,0 +1,22 @@
1
+ import functools
2
+ import warnings
3
+
4
+ def deprecated(reason: str = ""):
5
+ """
6
+ Decorator to mark functions as deprecated.
7
+ It will result in a warning being emitted when the function is used.
8
+ """
9
+ def decorator(func):
10
+ msg = f"The function `{func.__name__}` is deprecated."
11
+ if reason:
12
+ msg += f" {reason}"
13
+
14
+ @functools.wraps(func)
15
+ def wrapper(*args, **kwargs):
16
+ warnings.simplefilter("always", DeprecationWarning) # show even if filtered
17
+ warnings.warn(msg, category=DeprecationWarning, stacklevel=2)
18
+ warnings.simplefilter("default", DeprecationWarning) # reset filter
19
+ return func(*args, **kwargs)
20
+ return wrapper
21
+
22
+ return decorator
@@ -0,0 +1,198 @@
1
+ """
2
+ Functions to read/write syned objects in json files.
3
+
4
+ Notes
5
+ -----
6
+ The elements that are not explicitely imported in the code that follows, but they MUST be imported
7
+ to define the objects at run time.
8
+ To import more elements, yoy can use the exec_command keyword.
9
+
10
+ """
11
+ from syned.storage_ring.electron_beam import ElectronBeam
12
+ from syned.storage_ring.magnetic_structures.undulator import Undulator
13
+ from syned.storage_ring.magnetic_structures.wiggler import Wiggler
14
+ from syned.storage_ring.magnetic_structures.bending_magnet import BendingMagnet
15
+ from syned.storage_ring.magnetic_structure import MagneticStructure
16
+ from syned.beamline.optical_elements.ideal_elements.screen import Screen
17
+ from syned.beamline.optical_elements.ideal_elements.ideal_lens import IdealLens
18
+ from syned.beamline.optical_elements.absorbers.filter import Filter
19
+ from syned.beamline.optical_elements.absorbers.slit import Slit
20
+ from syned.beamline.optical_elements.absorbers.beam_stopper import BeamStopper
21
+ from syned.beamline.optical_elements.absorbers.holed_filter import HoledFilter
22
+ from syned.beamline.optical_elements.mirrors.mirror import Mirror
23
+ from syned.beamline.optical_elements.crystals.crystal import Crystal
24
+ from syned.beamline.optical_elements.gratings.grating import Grating
25
+ from syned.beamline.optical_elements.gratings.grating import GratingVLS
26
+ from syned.beamline.optical_elements.gratings.grating import GratingBlaze
27
+ from syned.beamline.optical_elements.gratings.grating import GratingLamellar
28
+
29
+ from syned.beamline.shape import BoundaryShape
30
+ from syned.beamline.shape import Rectangle, Ellipse, Circle
31
+ from syned.beamline.shape import MultiplePatch
32
+ from syned.beamline.shape import DoubleRectangle, DoubleEllipse, DoubleCircle
33
+
34
+ from syned.beamline.shape import SurfaceShape
35
+ from syned.beamline.shape import Conic, Plane, Sphere, SphericalCylinder
36
+ from syned.beamline.shape import Ellipsoid, EllipticalCylinder
37
+ from syned.beamline.shape import Paraboloid, ParabolicCylinder
38
+ from syned.beamline.shape import Hyperboloid, HyperbolicCylinder
39
+ from syned.beamline.shape import Toroid
40
+
41
+ from syned.storage_ring.light_source import LightSource
42
+ from syned.storage_ring.empty_light_source import EmptyLightSource
43
+
44
+ from syned.beamline.beamline import Beamline
45
+ from syned.beamline.beamline_element import BeamlineElement
46
+ from syned.beamline.element_coordinates import ElementCoordinates
47
+
48
+ from collections import OrderedDict
49
+
50
+ try:
51
+ import json_tricks as json # to save numpy arrays
52
+ except:
53
+ import json
54
+ from urllib.request import urlopen
55
+
56
+ def load_from_json_file(file_name, exec_commands=None):
57
+ """
58
+ Function to load a syned object from a json file.
59
+
60
+ Parameters
61
+ ----------
62
+ file_name : str
63
+ The file name.
64
+ exec_commands : str
65
+ The commands (typically import...) to be executed before accesing the file.
66
+
67
+ Returns
68
+ -------
69
+ instance of SynedObject
70
+
71
+ """
72
+ f = open(file_name)
73
+ text = f.read()
74
+ f.close()
75
+ return load_from_json_text(text, exec_commands=exec_commands)
76
+
77
+ def load_from_json_url(file_url, exec_commands=None):
78
+ """
79
+ Function to load a syned object from a remote json file.
80
+
81
+ Parameters
82
+ ----------
83
+ file_url : str
84
+ The URL with the file name.
85
+ exec_commands : str
86
+ The commands (typically import...) to be executed before accesing the file.
87
+
88
+ Returns
89
+ -------
90
+ instance of SynedObject
91
+
92
+ """
93
+ u = urlopen(file_url)
94
+ ur = u.read()
95
+ url = ur.decode(encoding='UTF-8')
96
+ return load_from_json_text(url, exec_commands=exec_commands)
97
+
98
+ def load_from_json_text(text, exec_commands=None):
99
+ """
100
+ Function to load a syned object from a json txt.
101
+
102
+ Parameters
103
+ ----------
104
+ text : str
105
+ The text with the corresponding info.
106
+ exec_commands : str
107
+ The commands (typically import...) to be executed before accesing the file.
108
+
109
+ Returns
110
+ -------
111
+ instance of SynedObject
112
+
113
+ """
114
+ return load_from_json_dictionary_recurrent(json.loads(text), exec_commands=exec_commands)
115
+
116
+ def load_from_json_dictionary_recurrent(jsn, verbose=False, exec_commands=None):
117
+ """
118
+ Function to convert a dictionary (got from json file) into a syned object.
119
+
120
+ Parameters
121
+ ----------
122
+ jsn : dict
123
+ The dictionary with json file information.
124
+ verbose : boolean, optional
125
+ Define or not verbose output.
126
+ exec_commands : str
127
+ The commands (typically import...) to be executed before accesing the file.
128
+
129
+ Returns
130
+ -------
131
+ instance of SynedObject
132
+
133
+ """
134
+ if isinstance(exec_commands, list):
135
+ for command in exec_commands:
136
+ if verbose: print(">>>>",command)
137
+ exec(command)
138
+ elif isinstance(exec_commands, str):
139
+ if verbose: print(">>>>", exec_commands)
140
+ exec(exec_commands)
141
+
142
+ if verbose: print(jsn.keys())
143
+ if "CLASS_NAME" in jsn.keys():
144
+ if verbose: print("FOUND CLASS NAME: ",jsn["CLASS_NAME"])
145
+ if verbose: print(">>>>eval: ", jsn["CLASS_NAME"])
146
+ try:
147
+ tmp1 = eval(jsn["CLASS_NAME"]+"()")
148
+ except:
149
+ raise RuntimeError("Error evaluating: "+jsn["CLASS_NAME"]+"() ** you could use the exec_command keyword to import it at run time **")
150
+
151
+
152
+ if tmp1.keys() is not None:
153
+ NOT_FOUND = "--------NOT-FOUND--------"
154
+ for key in tmp1.keys():
155
+ stored_value = jsn.get(key, NOT_FOUND)
156
+ if str(stored_value) != NOT_FOUND:
157
+ if verbose: print(">>>>processing",key ,type(jsn[key]))
158
+ if isinstance(jsn[key],dict):
159
+ if verbose: print(">>>>>>>>dictionary found, starting recurrency",key ,type(jsn[key]))
160
+ tmp2 = load_from_json_dictionary_recurrent(jsn[key],exec_commands=exec_commands)
161
+ if verbose: print(">>>>2",key,type(tmp2))
162
+ tmp1.set_value_from_key_name(key,tmp2)
163
+ elif isinstance(jsn[key], list):
164
+ if verbose: print(">>>>>>>>LIST found, starting recurrency",key ,type(jsn[key]))
165
+ out_list_of_objects = []
166
+ for element in jsn[key]:
167
+ if isinstance(element, dict):
168
+ if verbose: print(">>>>>>>>LIST found, starting recurrency",key ,type(element))
169
+ tmp3 = load_from_json_dictionary_recurrent(element, exec_commands=exec_commands)
170
+ if verbose: print(">>>>3",type(tmp3))
171
+ out_list_of_objects.append(tmp3)
172
+ else:
173
+ print("***** Failed to load", element)
174
+ if verbose: print("kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",out_list_of_objects)
175
+ tmp1.set_value_from_key_name(key,out_list_of_objects)
176
+ # tmp1.set_value_from_key_name(key,tmp2)
177
+ else:
178
+ if verbose: print(">>>>>>> setting value for key: ",key," to: ",repr(jsn[key]))
179
+ tmp1.set_value_from_key_name(key,jsn[key])
180
+
181
+ return tmp1
182
+
183
+
184
+ if __name__ == "__main__":
185
+
186
+ file_url = "http://ftp.esrf.fr/pub/scisoft/syned/lightsources/ESRF_ID01_EBS_PPU35_22.json"
187
+ syned_obj = load_from_json_url(file_url)
188
+ print(syned_obj.info())
189
+
190
+
191
+ #
192
+ # file_url = "/home/manuel/Oasys/ALSU-IR-BM.json"
193
+ # syned_obj = load_from_json_file(file_url)
194
+ # print(syned_obj.info())
195
+
196
+ # file_url = "/home/manuel/Oasys/bl.json"
197
+ # syned_obj = load_from_json_file(file_url)
198
+ # print(syned_obj.info())
File without changes
@@ -0,0 +1,67 @@
1
+
2
+ from syned.beamline.beamline import Beamline
3
+
4
+ class WidgetDecorator(object):
5
+ """
6
+ Definition of a widget decorator (to be used by widget implementations).
7
+
8
+ """
9
+
10
+ @classmethod
11
+ def syned_input_data(cls, multi_input=False):
12
+ """
13
+ A string to help defining SYNED data in OASYS.
14
+
15
+ Returns
16
+ -------
17
+ list
18
+ [("SynedData", Beamline, "receive_syned_data")]
19
+
20
+ """
21
+ try: # OASYS2
22
+ import oasys2
23
+
24
+ if not multi_input:
25
+ from orangewidget.widget import Input
26
+
27
+ return Input(name="Syned Data",
28
+ type=Beamline,
29
+ id="SynedData",
30
+ default=True, auto_summary=False)
31
+ else:
32
+ from orangewidget.widget import MultiInput
33
+
34
+ return MultiInput(name="Syned Data",
35
+ type=Beamline,
36
+ id="SynedData",
37
+ default=True, auto_summary=False)
38
+ except:
39
+ return [("SynedData", Beamline, "receive_syned_data")]
40
+
41
+ @classmethod
42
+ def append_syned_input_data(cls, inputs):
43
+ """
44
+
45
+ Parameters
46
+ ----------
47
+ inputs
48
+
49
+
50
+ """
51
+ for input in WidgetDecorator.syned_input_data():
52
+ inputs.append(input)
53
+
54
+ def receive_syned_data(self, data):
55
+ """
56
+ To be implemented in the main object.
57
+
58
+ Parameters
59
+ ----------
60
+ data
61
+
62
+ Raises
63
+ ------
64
+ NotImplementedError
65
+
66
+ """
67
+ raise NotImplementedError("Should be implemented")
@@ -0,0 +1,88 @@
1
+ Metadata-Version: 2.4
2
+ Name: syned
3
+ Version: 1.0.47
4
+ Summary: SYNED (SYNchrotron Elements Dictionary) kernel library
5
+ Home-page: https://github.com/oasys-kit/syned
6
+ Download-URL: https://github.com/oasys-kit/syned
7
+ Author: Manuel Sanchez del Rio, Luca Rebuffi
8
+ Author-email: srio@esrf.eu
9
+ Maintainer: L Rebuffi and M Sanchez del Rio
10
+ Maintainer-email: srio@esrf.eu
11
+ License: GPLv3
12
+ Keywords: dictionary,glossary,synchrotronsimulation
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
15
+ Classifier: Environment :: Plugins
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
18
+ Classifier: Operating System :: POSIX
19
+ Classifier: Operating System :: Microsoft :: Windows
20
+ Classifier: Topic :: Scientific/Engineering :: Visualization
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Intended Audience :: Education
23
+ Classifier: Intended Audience :: Science/Research
24
+ Classifier: Intended Audience :: Developers
25
+ License-File: LICENSE
26
+ Requires-Dist: setuptools
27
+ Requires-Dist: numpy
28
+ Requires-Dist: scipy
29
+ Dynamic: author
30
+ Dynamic: author-email
31
+ Dynamic: classifier
32
+ Dynamic: description
33
+ Dynamic: download-url
34
+ Dynamic: home-page
35
+ Dynamic: keywords
36
+ Dynamic: license
37
+ Dynamic: license-file
38
+ Dynamic: maintainer
39
+ Dynamic: maintainer-email
40
+ Dynamic: requires-dist
41
+ Dynamic: summary
42
+
43
+ =====
44
+ syned
45
+ =====
46
+
47
+ About
48
+ -----
49
+
50
+ SYNchrotron Elements Dictionary.
51
+
52
+ A python library to define the components (sources, mirrors, crystals, etc.) of a synchrotron beamline and their positions.
53
+ They can be read/write to json files.
54
+ It is used by OASYS as a common tool to define sources and optical systems that are then exported to the different add-ons.
55
+
56
+
57
+ Documentation
58
+ -------------
59
+ https://syned.readthedocs.io/
60
+
61
+
62
+ Source repository
63
+ -----------------
64
+ https://github.com/oasys-kit/syned
65
+
66
+ Quick-installation
67
+ ------------------
68
+
69
+ Syned can be installed with Python 3.x:
70
+
71
+ .. code-block:: console
72
+
73
+ $ python -m pip install syned
74
+
75
+ Graphical user interface
76
+ ------------------------
77
+
78
+ A graphical interface is available under Oasys: https://github.com/oasys-kit/OASYS-SYNED
79
+
80
+ Reference
81
+ ---------
82
+
83
+ Luca Rebuffi, Manuel Sanchez del Rio,
84
+ "Interoperability and complementarity of simulation tools for beamline design in the
85
+ OASYS environment,"
86
+ Proc. SPIE 10388, Advances in Computational Methods for X-Ray Optics IV, 1038808 (23 August 2017);
87
+ https://doi.org/10.1117/12.2274232
88
+
@@ -0,0 +1,54 @@
1
+ syned/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ syned/syned_object.py,sha256=p9nGtvxVZkNx5JlDol3c-1n8qXRxtFc01SjXV8HLyOs,8033
3
+ syned/__test/__init__.py,sha256=OQwx0a5g_fzul1uaL4Lsq60GAnadpFUphcVuDbgjCKE,3390
4
+ syned/__test/test.py,sha256=ID7--g20G8vLj9q817Z8eCIoIEI2O_KVBd01ehivOpc,1172
5
+ syned/beamline/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
6
+ syned/beamline/beamline.py,sha256=dOuwOj68613zobq-OisfNyccGNaHtbM1i5kwpAtRVgw,4504
7
+ syned/beamline/beamline_element.py,sha256=48TJQH3bps7txipruFmQy7mk9uWEqqJLwinyjtGUWgc,2183
8
+ syned/beamline/element_coordinates.py,sha256=t92vzY7--vPg5duCrSEeUVpcVTHWPXaP6lqSE99w_Zc,5276
9
+ syned/beamline/optical_element.py,sha256=foJuYNYmPFC9FQ0i1Y_AApc3nW-S0Wid_JMP47xTqRw,1143
10
+ syned/beamline/optical_element_with_surface_shape.py,sha256=uNbTPb2AdwvS3e5SRGdKNX8Gs4kJ0t2q9VjE7qTkOog,4267
11
+ syned/beamline/shape.py,sha256=QAhPKxDhj-ciS6AiijFFNWgtDWfhqehqx2IerN3bRXA,87065
12
+ syned/beamline/optical_elements/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
+ syned/beamline/optical_elements/absorbers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ syned/beamline/optical_elements/absorbers/absorber.py,sha256=_8_ynlSVWQv5lzMusL6mYkS56XvHeeN7rd-POR6ChKQ,663
15
+ syned/beamline/optical_elements/absorbers/beam_stopper.py,sha256=pHywuyGAP41oWc3i9MgKaF9Sqgl9-MtRiDAX8zuQoGI,1973
16
+ syned/beamline/optical_elements/absorbers/filter.py,sha256=yEig-uycMKdtxG_11tNAlewNTbv0YIaNMusaldT6JEQ,1715
17
+ syned/beamline/optical_elements/absorbers/holed_filter.py,sha256=y4CcIZ6D2mxTfEx9WtwW5KZNCvM5cUfcIBtbr7U2orM,2050
18
+ syned/beamline/optical_elements/absorbers/slit.py,sha256=eJi23OgDLUdVVFhCnzrE01xuk7WORcXIGB6l_PK0cag,2597
19
+ syned/beamline/optical_elements/crystals/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
20
+ syned/beamline/optical_elements/crystals/crystal.py,sha256=Wrjy4ZRn6dBhI19qNOgVN8Jod4yQbU8nSbgtmZL40jw,2925
21
+ syned/beamline/optical_elements/gratings/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
22
+ syned/beamline/optical_elements/gratings/grating.py,sha256=sOaidmEgmOAV4R8Jch6JH0ElqoQRQm7Al7HAr_O8IYA,12011
23
+ syned/beamline/optical_elements/ideal_elements/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
24
+ syned/beamline/optical_elements/ideal_elements/ideal_element.py,sha256=qmOt67kOSNdAJCZWcf6KIKGNtukTl9WcbQl6PnCrPzs,600
25
+ syned/beamline/optical_elements/ideal_elements/ideal_fzp.py,sha256=wkqxe7sviI1DYomRYxeaC5W0YYOQBFJaqe64q2BlO8M,5067
26
+ syned/beamline/optical_elements/ideal_elements/ideal_lens.py,sha256=X2zHfPbUGOn_LWaz-A-2EpOrog7gCTJ8wu10ZoJPRvY,1654
27
+ syned/beamline/optical_elements/ideal_elements/screen.py,sha256=NpVJZsA-u-T5OgUWxTYebHdoNJb0oKh2ENRhv8WpJ_A,408
28
+ syned/beamline/optical_elements/mirrors/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
29
+ syned/beamline/optical_elements/mirrors/mirror.py,sha256=RAFUzYlj09rPMPvFVlZnMTeQMogMO1aHRvCJIddiFqg,1722
30
+ syned/beamline/optical_elements/multilayers/__init__.py,sha256=OQwx0a5g_fzul1uaL4Lsq60GAnadpFUphcVuDbgjCKE,3390
31
+ syned/beamline/optical_elements/multilayers/multilayer.py,sha256=AweNp22N1Jfthd7-1KDBhBtlRqqmRGi1qu7Yed0f-pM,2000
32
+ syned/beamline/optical_elements/refractors/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
33
+ syned/beamline/optical_elements/refractors/crl.py,sha256=gew_bUP8OOwjYwxUOh73vj9wctE23RQNzXYxsZA_zg0,3029
34
+ syned/beamline/optical_elements/refractors/interface.py,sha256=T_ZXkN3YO8fjFE9I4jN9fMHOp0qmlFotldklUW8mvCQ,2337
35
+ syned/beamline/optical_elements/refractors/lens.py,sha256=xQUiYl3t3JwrZnNkTFDsnq5-FejaNPvCri_qlwCWSA8,3310
36
+ syned/storage_ring/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
37
+ syned/storage_ring/electron_beam.py,sha256=O0_tuulZcpT6_Sf4upMbbeJOVHyewxdqvs6uHlQ8JP4,28476
38
+ syned/storage_ring/empty_light_source.py,sha256=W1YHH4HMzpMwELJ4TljL4xf0OXHcsNHgHyLYGSFMeZw,943
39
+ syned/storage_ring/light_source.py,sha256=F-Alw_K3CxZ91N8d8KXwufDok4Z5vB6fjYvgdV4Whx0,2492
40
+ syned/storage_ring/magnetic_structure.py,sha256=M9CsF799HEuL8oOyGyGtuFAUh1_7hXfsUoLZmtSL6t0,241
41
+ syned/storage_ring/magnetic_structures/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
42
+ syned/storage_ring/magnetic_structures/bending_magnet.py,sha256=krg5iW1KtTmPXbx75eyHGGByBrMNssxp3jgH1JrAKRU,10493
43
+ syned/storage_ring/magnetic_structures/insertion_device.py,sha256=XhXN7pX3L0xQly5SpEEi6_nCQ2vDcxFp_KQJZCbwpfE,4246
44
+ syned/storage_ring/magnetic_structures/undulator.py,sha256=NkcoaRcCNJMasXUdiA_NZldLLsNynntb-12FUssxzes,13497
45
+ syned/storage_ring/magnetic_structures/wiggler.py,sha256=2RtcKSzhLDksWLSk3D97yk_q3C-ZFr60_GJGBCzwnmQ,1053
46
+ syned/util/__init__.py,sha256=JmVXq2RSaCjSlvdVrXYfPhCVwJhZjvFjUqBYE8oIni8,742
47
+ syned/util/json_tools.py,sha256=vC0dQHUJnz3m1PUFK-oawHs7l-IP5WYNbVKv_gOjfNk,7615
48
+ syned/widget/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ syned/widget/widget_decorator.py,sha256=hfjwWmK9HZe7MtwIOAHT7rUgMYN6VmHqHB2zfVVRY4E,1658
50
+ syned-1.0.47.dist-info/licenses/LICENSE,sha256=C5iV2YY_hn_fGUPOveNdbY6tczl4oZCgfy5E8UdLQjk,1094
51
+ syned-1.0.47.dist-info/METADATA,sha256=YZtfbepQlzDC7-uqK7UlIrLiicJV0CY-8uaD1sC1-3Q,2468
52
+ syned-1.0.47.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
+ syned-1.0.47.dist-info/top_level.txt,sha256=PMrZrTESxk_mUTBz0gyGBlYvM_3BesYCHB1MUgjSlVE,6
54
+ syned-1.0.47.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+ Copyright (c) 2017-2019 The Oasys Organization
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ this software and associated documentation files (the "Software"), to deal in
6
+ the Software without restriction, including without limitation the rights to
7
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ the Software, and to permit persons to whom the Software is furnished to do so,
9
+ subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+
@@ -0,0 +1 @@
1
+ syned