semvec/pypi-packages huggingface dataset:
oswin-tempest-plugin 2.1.0
This project contains Tempest tests to cover the os_win project, as well as a plugin to automatically load these tests into Tempest.
Requires Python: >=3.8

====================
oswin-tempest-plugin
====================

This project contains Tempest tests to cover the os_win project, as well as a plugin to automatically load these tests into Tempest.

Please fill here a long description which must be at least 3 lines wrapped on
80 cols, so that distribution package maintainers can use it in their packages.
Note that this is a hard requirement.

* Free software: Apache license
* Documentation: http://docs.openstack.org/developer/oswin-tempest-plugin
* Source: http://opendev.org/openstack/oswin-tempest-plugin
* Bugs: http://bugs.launchpad.net/oswin-tempest-plugin

Features
--------

* TODO
fakeshell 1.0.1
A virtual shell implementation
Requires Python: >=3.6

# Fakeshell

Fakeshellは仮想的なシェル環境を提供するパッケージです。  
標準で提供されているLinuxコマンドの代わりに、Pythonで実装されたコマンドを実行できます。  
fakeshellを使用することで、Linuxシステムのようなサンドボックス環境を再現することができます。  
[![asciicast](https://asciinema.org/a/549416.svg)](https://asciinema.org/a/549416)

## インストール方法
pipを使ってfakeshellをインストールできます。

```bash
$ pip install fakeshell
```

## 使い方
fakeshellを使うには、PythonからFakeShellクラスをインポートしてインスタンスを作成する必要があります。  
FakeShellクラスは、次のように作成できます。  

```python
from fakeshell.shell import FakeShell
fake_sh = FakeShell(cwd="/tmp")
```

FakeShellクラスは、次のようなメソッドを提供しています。

run_command(command: str) -> Generator[str]:
FakeShellクラスのrun_commandメソッドを使用すると、指定したコマンドを実行することができます。
コマンドを実行すると、実行結果のジェネレータが返されます。

```python
for result in fake_sh.run_command("ls -l > hoge.txt"):
    print(result)
```

stopメソッドを呼び出すとファイルシステムへの書き込み内容を元の状態に戻します。
```python
fake_sh.stop()
```

以下のように記述することでstopメソッドを省略することもできます。
```python
with FakeShell(cwd="/tmp") as fake_sh:
    for result in fake_sh.run_command("ls -l > hoge.txt"):
        print(result)
```

run_commandメソッドによって実行される関数には、以下のような仮想のファイルシステムが提供されます。  
仮想ファイルシステム上ではホストマシンのファイルシステムと同じ内容が参照されますが、  
ファイルシステムへの読み書きはホストマシンへは影響しません。

* ファイルの読み書き
* ディレクトリの作成、削除
* ファイル、ディレクトリのパーミッション変更
* シンボリックリンクの作成、削除
* ファイルシステムの使用率の確認

## 独自コマンドを実装する
独自コマンドを実装するには、register_commandを使って関数を登録します。

```python
from fakeshell.interpreter import register_command

def hello(args="", stdin=""):
    stdout = f"Hello, {args}"
    return stdout

register_command("hello", hello)
```

登録したコマンドは、以下のようにして実行できます。

```python
for result in fake_sh.run_command("hello John"):
    print(result)
```

## FakeSSHサーバを構築する
```
$ docker pull ghcr.io/phishing-hunter/fakeshell:main
$ docker run --rm -it -d -p 2222:2222 ghcr.io/phishing-hunter/fakeshell:main
$ ssh root@localhost -p 2222 # root/password
```
commandflow 0.1.3
Writing shell by python.
Requires Python: >=3.7,<4.0

# commandflow

使用Python生成命令行

## 🍕 安装
```bash
pip install commandflow
```

## 🎉 快速开始

```py
from commandflow import Command
class MyCommand(Command):
    exe = 'fastp'

    def input(self, filename):
        self.set_action('f', 'file', value=filename)

if __name__ == '__main__':
    command = MyCommand()
    command.input('test.file')
    print(command.command)  # fastp --file test.file
```

## ✨文档

### 设计动机
1. 在进行生信分析时，往往会使用很多分析软件，当串联一个完整的分析流程时，需要编写大量的shell脚本，这很不优雅。
2. 我不喜欢写shell。


### 层次结构
![](./assert/layout.svg)
对于每一条命令Command而言，是由若干个Action组成，每一个Action为一个参数。

### 创建一个命令
```py
from commandflow import Command
class MyCommand(Command):
    exe = 'bwa'  # 指定可执行程序
```
或者也可以通过`set_exe()`来指定可执行程序
```py
from commandflow import Command
class MyCommand(Command):
    exe = 'bwa'  # 指定可执行程序

c = MyCommand()
c.set_exe('bwa')
```
### 添加参数
使用`set_action()`来添加参数到最终的命令行中
```py
from commandflow import Command
class MyCommand(Command):
    exe = 'bwa'

    def input(self, filename):
        self.set_action(
            'f',
            'file',
            value=filename
        )

c = MyCommand()
c.input('test.docx')
```
`set_action()`可以接收多个参数
```txt
- short_arg_name： 短参数名  -f
- long_arg_name： 长参数名  --file
- value：参数值
- help：对该条参数的解释说明
- positional：使用是一个位置参数，默认放到最后
- sep：当传递的value是一个list的时候，所指定的连接符，默认为空格
- stdout：命令是否需要指定标准输出
```
`value`可以为`int`、`float`、`str`、`list`类型的值，当`value`是一个`list`类型的值时，会通过`sep`连接起来，如当`sep`为空格时，`[1, 2, 3]`会被拼接为`1 2 3`，这对某些接收多个参数值的参数非常有用。


### 获取最终的命令行
```py
from commandflow import Command
class MyCommand(Command):
    exe = 'bwa'

    def input(self, filename):
        self.set_action(
            'f',
            'file',
            value=filename
        )

c = MyCommand()
c.input('test.docx')
print(c.command)  # bwa --file test.docx
```
当相同的参数值被多次设置参数时，后面设置的会将前面设置的覆盖
```py
c = MyCommand()
c.input('test.docx')
c.input('apple.docx')
print(c.command)  # bwa --file apple.docx
```


### 生成多个命令行
上面的方式只能生成一条命令，但实际应用中可能会涉及到需要生成多条命令，彼此之间只是参数值不同

使用`record()`记录需要生成的命令，并通过`records`来获取所有记录的命令
```py
c = MyCommand()
for file in ['1.docx', '2.docx', '3.docx']:
    c.input(file)
    c.record()

print(c.records)  # ['bwa --file 1.docx', 'bwa --file 2.docx', 'bwa --file 3.docx']
```

### 将所有命令重置（删除所有参数）
```py
c = MyCommand()
c.clear()
```


### 更改参数前面的前缀
有些软件中，可能参数名前面不是`-`、`--`，比如某些参数名并不是双短线跟着长参数名，而是短短线跟着长参数名，如`-file test.docx`。可以在继承的类中通过添加`long_dash`来声明长参数名的前缀，`short_dash`来声明短参数名的前缀。

```py
from commandflow import Command
class MyCommand(Command):
    long_dash = '-'
    short_dash = '-'
    exe = 'bwa'
```

### 后台任务
```py
c.nohup(nohup=True, nohup_log=False)
c.input('apple.docx')
print(c.command)
# nohup bwa --file apple.docx >/dev/null 2>&1
```