semvec/pypi-packages huggingface dataset:
coman 0.1a5
Simpler Conda dependency management
License: MIT

# CoMan: Conda Manager

[![PyPI](https://img.shields.io/pypi/v/coman)](https://pypi.org/project/coman/)
![PyPI - License](https://img.shields.io/pypi/l/coman)

A simple CLI for Conda dependency management. CoMan gives you simple commands to manage dependencies in your `environment.yml` and properly uses lock files. Moreover, it manages unique Conda environments per project directory. CoMan mimicks the workflow of [Poetry](https://github.com/python-poetry/poetry) (or any other modern dependency manager), but then for Conda.

**Warning:** CoMan is work in progress and may not work in every scenario. 

CoMan manages:

 - `environment.yml`:
   - `add`/`remove` dependencies with version constraints
 - `conda-{platform}.lock`:
   - (multi-platform) lock files for reproducable environments
 - `requirements.txt`:
   - (optional) pinned pip dependencies from `environment.yml`
 - `{CONDA_ROOT}/envs/{basename}-{hash}`:
   - unique environments for your project in your default environments directory

## Installation
There is currently no CoMan conda recipe. CoMan is designed to work independently of Conda, so that it can install and run Conda environments on any system (with Micromamba).

```bash
pip install -U coman

# pipx (recommended)
# make sure that pipx uses the python environment in which conda is installed (the conda base environment) if you have those installed
conda activate base
pipx install -e --python python coman
```

### Latest development version
```
pip install --user --upgrade git+https://github.com/wietsedv/coman.git
```

### Development
```bash
git clone git@github.com:wietsedv/coman.git
cd coman && pip install -e .
```

## Quick start
```bash
cd projects/MyProject

# "cm" is short for "coman"; use the command you prefer

# show system and environment status
cm info

# create environment.yml and lock file
cm init

# install the environment
cm install

# add "requests" dependency to environment.yml, the lock file(s) and your installed environment
cm add requests

# show the installed packages
cm show

# run a command (use -- to avoid argument conflicts)
cm run -- python --version
cm python -- --version  # available for bash and python
coman-python --version  # available for bash and python

# activate your environment in your current shell (at least works with bash and zsh)
cm shell
```
dc6006l 0.0.1
CLI/library to control FNIRSI DC Power Supply (DC-6006L, etc).
License: MIT

# dc6006l - CLI/library to control FNIRSI DC Power Supply (DC-6006L, etc)

# What is this?

[FNIRSI DC6006L](http://www.fnirsi.cn/productinfo/556155.html) is a programmable DC power supply
that is quite compact and inexpensive. This CLI tool/library allows you to control an unit
over an built-in USB-serial port.

This work is based on the work by [jcheger](https://github.com/jcheger/fnirsi-dc580-protocol)
for a similar model, DC-580. They seem to support same set of commands, but are not compatible
in message format.

# How to install
```
pip install dc6006l
```

# How to use
```
dc6006l - Controls FNIRSI DC Power Supply (DC-6006L, etc)
Usage: dc6006l [-p devport] [-m model] cmd [cmd...]
Commands:
  on: Turn power on
  off: Turn power off
  v=<V>: Set target voltage
  c=<A>: Set target current
  ovp=<V>: Set over-voltage limit
  ocp=<A>: Set over-current limit
  opp=<W>: Set over-power limit
  ohp=<sec>: Set over-hour limit (0 to disable)
  noprotect: Disable protection
  stat: Show status (packed trace)
  trace=<n>: Show trace capture (infinite if n=-1)
  flush: Flush/clear log buffer
  echo=<str>: Print given input
  sep: Print separator string
  sleep=<sec>: Sleep for given seconds
  check: Enable double-check mode
Example:
  # Output 1V1A for ~3s
  $ dc6006l v=1 c=1 on sleep=3 off
  # More complex operation
  $ dc6006l check v=1.5 c=1.0 on flush sep trace=15 c=0.5 flush sep trace=15 off
NOTE:
  - Set envvar FNIRSI_PS=/some/devport to specify default port to use.
```

# NOTE

While this code works for me, your milage may vary.

Just as a head-up, in one case, target voltage was unexpectedly set to 15V
when I sent a command to set to 1.5V (V0150). Because there is no checksum in frame,
I suppose the unit dropped a byte and somehow interpreted as "V1500".
While the hardware is nice, it seems there is a serious issue with firmware
of the product that it easily drops data sent over a serial port.

I added double-check mode (cmd: check) to cope with this, but this mode is
ineffective if you need to change the setting while the unit is already on.