3636from . import mass
3737from . import density
3838
39- _LAZY_MODULES = []
39+ _LAZY_MODULES : list [ str ] = []
4040_LAZY_LOAD = {
4141 'formula' : 'formulas' ,
4242 'mix_by_weight' : 'formulas' ,
@@ -77,6 +77,129 @@ def __dir__():
7777density .init (elements )
7878del mass , density
7979
80+ # For type hinting with vscode we need an explicit list of elements.
81+ hydrogen = H = elements .symbol ("H" )
82+ helium = He = elements .symbol ("He" )
83+ lithium = Li = elements .symbol ("Li" )
84+ beryllium = Be = elements .symbol ("Be" )
85+ boron = B = elements .symbol ("B" )
86+ carbon = C = elements .symbol ("C" )
87+ nitrogen = N = elements .symbol ("N" )
88+ oxygen = O = elements .symbol ("O" )
89+ fluorine = F = elements .symbol ("F" )
90+ neon = Ne = elements .symbol ("Ne" )
91+ sodium = Na = elements .symbol ("Na" )
92+ magnesium = Mg = elements .symbol ("Mg" )
93+ aluminum = Al = elements .symbol ("Al" )
94+ silicon = Si = elements .symbol ("Si" )
95+ phosphorus = P = elements .symbol ("P" )
96+ sulfur = S = elements .symbol ("S" )
97+ chlorine = Cl = elements .symbol ("Cl" )
98+ argon = Ar = elements .symbol ("Ar" )
99+ potassium = K = elements .symbol ("K" )
100+ calcium = Ca = elements .symbol ("Ca" )
101+ scandium = Sc = elements .symbol ("Sc" )
102+ titanium = Ti = elements .symbol ("Ti" )
103+ vanadium = V = elements .symbol ("V" )
104+ chromium = Cr = elements .symbol ("Cr" )
105+ manganese = Mn = elements .symbol ("Mn" )
106+ iron = Fe = elements .symbol ("Fe" )
107+ cobalt = Co = elements .symbol ("Co" )
108+ nickel = Ni = elements .symbol ("Ni" )
109+ copper = Cu = elements .symbol ("Cu" )
110+ zinc = Zn = elements .symbol ("Zn" )
111+ gallium = Ga = elements .symbol ("Ga" )
112+ germanium = Ge = elements .symbol ("Ge" )
113+ arsenic = As = elements .symbol ("As" )
114+ selenium = Se = elements .symbol ("Se" )
115+ bromine = Br = elements .symbol ("Br" )
116+ krypton = Kr = elements .symbol ("Kr" )
117+ rubidium = Rb = elements .symbol ("Rb" )
118+ strontium = Sr = elements .symbol ("Sr" )
119+ yttrium = Y = elements .symbol ("Y" )
120+ zirconium = Zr = elements .symbol ("Zr" )
121+ niobium = Nb = elements .symbol ("Nb" )
122+ molybdenum = Mo = elements .symbol ("Mo" )
123+ technetium = Tc = elements .symbol ("Tc" )
124+ ruthenium = Ru = elements .symbol ("Ru" )
125+ rhodium = Rh = elements .symbol ("Rh" )
126+ palladium = Pd = elements .symbol ("Pd" )
127+ silver = Ag = elements .symbol ("Ag" )
128+ cadmium = Cd = elements .symbol ("Cd" )
129+ indium = In = elements .symbol ("In" )
130+ tin = Sn = elements .symbol ("Sn" )
131+ antimony = Sb = elements .symbol ("Sb" )
132+ tellurium = Te = elements .symbol ("Te" )
133+ iodine = I = elements .symbol ("I" )
134+ xenon = Xe = elements .symbol ("Xe" )
135+ cesium = Cs = elements .symbol ("Cs" )
136+ barium = Ba = elements .symbol ("Ba" )
137+ lanthanum = La = elements .symbol ("La" )
138+ cerium = Ce = elements .symbol ("Ce" )
139+ praseodymium = Pr = elements .symbol ("Pr" )
140+ neodymium = Nd = elements .symbol ("Nd" )
141+ promethium = Pm = elements .symbol ("Pm" )
142+ samarium = Sm = elements .symbol ("Sm" )
143+ europium = Eu = elements .symbol ("Eu" )
144+ gadolinium = Gd = elements .symbol ("Gd" )
145+ terbium = Tb = elements .symbol ("Tb" )
146+ dysprosium = Dy = elements .symbol ("Dy" )
147+ holmium = Ho = elements .symbol ("Ho" )
148+ erbium = Er = elements .symbol ("Er" )
149+ thulium = Tm = elements .symbol ("Tm" )
150+ ytterbium = Yb = elements .symbol ("Yb" )
151+ lutetium = Lu = elements .symbol ("Lu" )
152+ hafnium = Hf = elements .symbol ("Hf" )
153+ tantalum = Ta = elements .symbol ("Ta" )
154+ tungsten = W = elements .symbol ("W" )
155+ rhenium = Re = elements .symbol ("Re" )
156+ osmium = Os = elements .symbol ("Os" )
157+ iridium = Ir = elements .symbol ("Ir" )
158+ platinum = Pt = elements .symbol ("Pt" )
159+ gold = Au = elements .symbol ("Au" )
160+ mercury = Hg = elements .symbol ("Hg" )
161+ thallium = Tl = elements .symbol ("Tl" )
162+ lead = Pb = elements .symbol ("Pb" )
163+ bismuth = Bi = elements .symbol ("Bi" )
164+ polonium = Po = elements .symbol ("Po" )
165+ astatine = At = elements .symbol ("At" )
166+ radon = Rn = elements .symbol ("Rn" )
167+ francium = Fr = elements .symbol ("Fr" )
168+ radium = Ra = elements .symbol ("Ra" )
169+ actinium = Ac = elements .symbol ("Ac" )
170+ thorium = Th = elements .symbol ("Th" )
171+ protactinium = Pa = elements .symbol ("Pa" )
172+ uranium = U = elements .symbol ("U" )
173+ neptunium = Np = elements .symbol ("Np" )
174+ plutonium = Pu = elements .symbol ("Pu" )
175+ americium = Am = elements .symbol ("Am" )
176+ curium = Cm = elements .symbol ("Cm" )
177+ berkelium = Bk = elements .symbol ("Bk" )
178+ californium = Cf = elements .symbol ("Cf" )
179+ einsteinium = Es = elements .symbol ("Es" )
180+ fermium = Fm = elements .symbol ("Fm" )
181+ mendelevium = Md = elements .symbol ("Md" )
182+ nobelium = No = elements .symbol ("No" )
183+ lawrencium = Lr = elements .symbol ("Lr" )
184+ rutherfordium = Rf = elements .symbol ("Rf" )
185+ dubnium = Db = elements .symbol ("Db" )
186+ seaborgium = Sg = elements .symbol ("Sg" )
187+ bohrium = Bh = elements .symbol ("Bh" )
188+ hassium = Hs = elements .symbol ("Hs" )
189+ meitnerium = Mt = elements .symbol ("Mt" )
190+ darmstadtium = Ds = elements .symbol ("Ds" )
191+ roentgenium = Rg = elements .symbol ("Rg" )
192+ copernicium = Cn = elements .symbol ("Cn" )
193+ nihonium = Nh = elements .symbol ("Nh" )
194+ flerovium = Fl = elements .symbol ("Fl" )
195+ moscovium = Mc = elements .symbol ("Mc" )
196+ livermorium = Lv = elements .symbol ("Lv" )
197+ tennessine = Ts = elements .symbol ("Ts" )
198+ oganesson = Og = elements .symbol ("Og" )
199+ deuterium = D = elements .symbol ("D" )
200+ tritium = T = elements .symbol ("T" )
201+ neutron = n = elements .symbol ("n" )
202+
80203# Add element name and symbol (e.g. nickel and Ni) to the public attributes.
81204__all__ += core .define_elements (elements , globals ())
82205
@@ -91,6 +214,7 @@ def _load_covalent_radius():
91214 'covalent_radius_units' ,
92215 'covalent_radius_uncertainty' ],
93216 _load_covalent_radius )
217+ del _load_covalent_radius
94218
95219def _load_crystal_structure ():
96220 """
@@ -102,6 +226,7 @@ def _load_crystal_structure():
102226 from . import crystal_structure
103227 crystal_structure .init (elements )
104228core .delayed_load (['crystal_structure' ], _load_crystal_structure )
229+ del _load_crystal_structure
105230
106231def _load_neutron ():
107232 """
@@ -114,6 +239,7 @@ def _load_neutron():
114239 from . import nsf
115240 nsf .init (elements )
116241core .delayed_load (['neutron' ], _load_neutron , isotope = True )
242+ del _load_neutron
117243
118244def _load_neutron_activation ():
119245 """
@@ -127,6 +253,7 @@ def _load_neutron_activation():
127253 activation .init (elements )
128254core .delayed_load (['neutron_activation' ], _load_neutron_activation ,
129255 element = False , isotope = True )
256+ del _load_neutron_activation
130257
131258def _load_xray ():
132259 """
@@ -138,6 +265,7 @@ def _load_xray():
138265 from . import xsf
139266 xsf .init (elements )
140267core .delayed_load (['xray' ], _load_xray , ion = True )
268+ del _load_xray
141269
142270def _load_emission_lines ():
143271 """
@@ -149,6 +277,7 @@ def _load_emission_lines():
149277 xsf .init_spectral_lines (elements )
150278core .delayed_load (['K_alpha' , 'K_beta1' , 'K_alpha_units' , 'K_beta1_units' ],
151279 _load_emission_lines )
280+ del _load_emission_lines
152281
153282def _load_magnetic_ff ():
154283 """
@@ -161,6 +290,7 @@ def _load_magnetic_ff():
161290 from . import magnetic_ff
162291 magnetic_ff .init (elements )
163292core .delayed_load (['magnetic_ff' ], _load_magnetic_ff )
293+ del _load_magnetic_ff
164294
165295
166296# Data needed for setup.py when bundling the package into an exe
@@ -173,9 +303,11 @@ def data_files():
173303 """
174304 import os
175305 import glob
306+ from .core import get_data_path
307+
176308 def _finddata (ext , patterns ):
177309 files = []
178- path = core . get_data_path (ext )
310+ path = get_data_path (ext )
179311 for p in patterns :
180312 files += glob .glob (os .path .join (path , p ))
181313 return files
0 commit comments