---
tags: community, minutes
---
# PlasmaPy Community Meeting | Tuesday 2022 February 1 at 19:00 UT
### Video Conference Information
* [Zoom link](https://zoom.us/j/91633383503?pwd=QWNkdHpWeFhrYW1vQy91ODNTVG5Ndz09)
* Instant messaging: [Matrix](https://app.element.io/#/room/#plasmapy:openastronomy.org) and [Gitter](https://gitter.im/PlasmaPy/Lobby)
* [GitHub Minutes Repository](https://github.com/PlasmaPy/plasmapy-project/tree/master/minutes)
* ["Community" Sub-directory](https://github.com/PlasmaPy/plasmapy-project/tree/master/minutes/_community)
* [PlasmaPy on GitHub](https://github.com/PlasmaPy/plasmapy) ([pull requests](https://github.com/PlasmaPy/plasmapy/pulls), [issues](https://github.com/PlasmaPy/plasmapy/issues))
* [PlasmaPy Enhancement Proposals on GitHub](https://github.com/PlasmaPy/PlasmaPy-PLEPs)
* [PlasmaPy Google Calendar](https://calendar.google.com/calendar/embed?src=c_sqqq390s24jjfjp3q86pv41pi8%40group.calendar.google.com&ctz=America%2FNew_York)
## Agenda (please feel free to edit or add items)
1. Introductions
2. 10-15 minutes for [roadmap](https://hackmd.io/@plasmapy/ry0mmnj6v)
3. solicit "Project Issues"
4. ...
5. Issues
1. [Issue 1409](https://github.com/PlasmaPy/PlasmaPy/issues/1409): enable pre-commit by default?
2.
9. Pull requests in progress
1. [PR 1364](https://github.com/PlasmaPy/PlasmaPy/pull/1364): Provide more flexibility in `CustomParticle` arguments
2. [PR 1380](https://github.com/PlasmaPy/PlasmaPy/pull/1380) Units notebook
3. [PR 1382](https://github.com/PlasmaPy/PlasmaPy/pull/1382): Particles notebook
4. [PR 1389](https://github.com/PlasmaPy/PlasmaPy/pull/1389): `test_validators`
2. **MERGED** Pull Requests
1. [PR 1287](https://github.com/PlasmaPy/PlasmaPy/pull/1287): CSS magic i.e. documentation font contrast styling
2. [PR 1399](https://github.com/PlasmaPy/PlasmaPy/pull/1399): Remove warnings from `CustomParticle` and `DimensionlessParticle` for NaN attributes
## Attendees
* Erik
* Nick
## Action Items
***Person***
* ...
***Nick***
* Start a discussion on GitHub about alternative `plasmapy.formulary` APIs
## Minutes
* How do we make the formulary UI more friendly?
* Looking to develop a scheme more easily pass arguments between formulary functionality.
* Nick's idea:
* Erik's idea:
* Leverage Python's ability to decompose a dictionary into a function's keywords (i.e. `**kwargs`)
*
```python
class Plasma(collections.UserDict):
# subclass
...
def Alfven_speed(
B: u.T,
density: (u.m ** -3, u.kg / u.m ** 3),
ion: Optional[Particle] = None,
z_mean: Optional[numbers.Real] = None,
**,
) -> u.m / u.s:
...
plasma = Plasma(Te=..., Ti=..., n=...)
Alfven_speed(**{**plasma, "B": 1*u.T})
Alfvent_speed(**plamsa.override(B=1*u.T))
plasma_lite = plasma.make_lite()
thermal_speed_lite(**plasma_lite, coeff=np.sqrt(2))
Union[Quantity[u.m], Quantity[u.C]]
Quantity[u.m , u.C]
```
Appended on June 1st, 2022
```python=
plasma = {
"B": 0.1 * u.T,
"density": 1e12 * u.cm ** -3,
"ion": "p",
"T_e": 5 * u.eV,
}
Alfven_speed(**{**plasma, "B": 0.2 * u.T})
class Plasma(collections.UserDict):
# subclass
...
def getter(self, modname):
if hasattr(plasma.formulary, modname)
formfunc = getattr(plasmapy.formulary, modname)
return formfunc(**self)
plasma = Plasma()
plasma.Alfvne_speed()
```
Appended on Aug. 16th, 2022
```python=
class Plasma:
_all_paramerers = {} # some kind of collection of all plasma parameters
def __init__(self, *args, **kwargs):
# definal all plasma parameters
...
def parameters(self, func, **kwargs):
# 1. inspect func to get arguments
# 2. pull inpsected arguments from _all_parammeters
# 3. Let **kwargs override collect _all_parameters
# 4. call func(collected_params)
# 5. return parameter
...
def gyrofrquency(self, *args, **kwargs):
"""
See Also
--------
Plasma.parameters
"""
self.parameters(pform.gyrofrequency, *args, **kwags)
@property
def arguments(self):
return self._all_parameters
```
```python=
>>> from plasmapy.plasma import Plasma
>>> from plasmapy import formulary as pform
>>> plasma = Plasma(...)
>>> wc = plasma.parameter(pform.gyrofrequency)
>>>
>>> pform.gyrofrequency(**plasma.arguments)
```
```python=
class Plasma:
def __init__(self, *args, **kwargs):
...
@property
def gyroradius(self):
return pform.gyroradius(self.B)
```
```python=
>>> from plasmapy.plasma import Plasma
>>> plasma = Plasma(...)
>>> plasma.lengths.gyroradius
0.1 m
>>>