semvec/pypi-packages huggingface dataset:
pynitrokey-debug 0.4.10
Python Library for Nitrokey FIDO2 & Nitrokey Start.
Requires Python: >=3.6

# pynitrokey

A command line interface for the Nitrokey FIDO2, Nitrokey Start and NetHSM.

## Current state
Update to the latest firmware versions on the Nitrokey Start and Nitrokey FIDO2 devices was tested. Windows support for Nitrokey Start is not added yet.

Additional features:
- handle `status` command for displaying touch button status (2.0.0 firmware and later);
- firmware signing adjusted for Nitrokey FIDO2 bootloader
- monitor command with timestamps

## Installation

### Linux, Unix

```bash
sudo apt install python3-pip
pip3 install --user pynitrokey
```

### Windows
*Generally Windows support and the installer are experimental - please use with caution.*

Known issues:
* Support for Nitrokey Start under Windows 10 is not working without installing libusb libraries (to be described).
* The installer does not remove a previous installation (manually remove it using `settings -> programs and apps`)

How to install:
1. Download the latest `.msi` installer from [releases](https://github.com/Nitrokey/pynitrokey/releases/)
1. Double-click the installer and click through (`Next` and `Finish`)
1. Open the command console in the administrator mode (Windows 10: press the right mouse button on the Menu Start and select "Windows PowerShell (Admin)" from the menu).
1. Enter `nitropy`

Without administrator privileges `nitropy` might not be able to communicate to device.

## Nitrokey FIDO2
### Firmware Update
Automatic firmware update is recommended via https://update.nitrokey.com. Alternatively, it is also possible to update the Nitrokey FIDO2 using:
```bash
nitropy fido2 update
```

Your Nitrokey FIDO2 is now updated to the latest firmware.

## Nitrokey Start
### Firmware Update

Verify device connection

```bash
nitropy start list
FSIJ-1.2.15-87042524: Nitrokey Nitrokey Start (RTM.10)
```
Start update process, logs saved to upgrade.log, handy in case of failure

```bash
nitropy start update
```

Does not ask for confirmation nor the default Admin PIN, handy for batch calls
```
nitropy start update -p 12345678 -y
```

Following will flash files from the local disk, instead of downloading them
```
nitropy start update --regnual $(FIRMWARE_DIR)/regnual.bin --gnuk ${FIRMWARE_DIR}/gnuk.bin
```

### Switching ID

```
nitropy start set-identity [0,1,2]
```

Where 0, 1 and 2 are the available IDs.

## Maintainers

Current maintainers can be found in [MAINTAINERS.MD](MAINTAINERS.MD) file.

## License

Licensed similarly to upstream, under either of

- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
  http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.
telegram-notification 0.2.0
Powerful utility to send telegram alarms from cli
Requires Python: >=3.6


![telegram_notification](https://img.shields.io/badge/telegram_notification-0.2.0-brightgreen)

# getting started

## 0. Install the utility.

Simply install.
```
$ sudp python3 -m pip install telegram-notification
```

## 1. Create your Telegram Bot.
![res01](https://raw.githubusercontent.com/dankernel/telegram_notification/main/res/01.gif)


- Search for `BotFather` on Telegram
- Enter `/start`
- Enter `/newbot`
- Enter `{your bot name}`
- Enter `{your bot id}`

## 2. Set your bot's token & user_id. 

![res02](https://raw.githubusercontent.com/dankernel/telegram_notification/main/res/02.gif)


- Enter `sudo noti` in the terminal.
- Enter the created bot token.
- Send `/start` to your bot.
- When confirmed, exit the program. (CTRL+c)

## 3. Use it anytime.

![res03](https://raw.githubusercontent.com/dankernel/telegram_notification/main/res/03.gif)


- Run it as a single command or use a pipe or use it in a shell script.

Please use it by referring to the [Example](https://github.com/dankernel/telegram_notification/blob/dev/docs/sample.md)
exql 1.0
Persist Excel/CSV sheets to MySQL (and vice versa)
Requires Python: >=3.6

# exql
Persist Excel/CSV sheets to MySQL (and vice versa)
# Installation
```pip install exql```
# How it works
Convert a directory into a database and the .csv and .xls files in that directory to tables (or vice versa i.e. database/table to director/.csv). Currently, only .csv/.xsl to MySQL conversion is supported.<br>
```
directory <==> database
CSV/Excel sheets in directory <==> tables in database 
```
For example,
```
MyDir           <->     CREATE SCHEMA MyDir;
|-file1.csv     <->     CREATE TABLE file1 (...);
|-file2.xlsx    <->     CREATE TABLE file2 (...);
```
# Usage
Import exql and create an Exql object passing your MySQL username, password, etc.
```python
from exql import exql
exql_obj = exql.Exql("root", "mysql@123", "localhost", 3306, False)
```
Create a database by passing path of directory to be converted to a DB. A sample directory is present in the `resources` directory
```python
exql_obj.create_db_from_directory("/path/demo_university_db")
```
Similarly, other methds can be used to create individual tables, delete rows, etc.

| Method  | Description |
| ------------- | ------------- |
| create_db_from_directory  | Create MySQL DB with name same as the directory name and tables built using .csv/.xlsx files present within the directory  |
| create_table_from_csv  | Persist data from a .csv/.xslx file to a single MySQL table |
| insert_in_table|Insert data from .csv into existing table |
|select_into_csv|Select rows read from a DB using the provided query into a .csv|
|delete_from_db|Delete rows matching column-value pairs provided in .csv from MySQL table|
|write_db_to_dir|Create a directory containing all tables of a DB saved as .csv files|
### Note
- In the .xsl or .csc files, SQL commands can be provided directly. Thus, the .csv or .xsl can have SQL queries as follows

| student_id  | name | age | added_on |
| ------------- | ------------- | ------------- |------------- |
|INT|VARCHAR(100)|INT|DATETIME|
PRIMARY KEY|NOT NULL|NOT NULL|
| | |
100001|(SELECT UPPER('John Keats'))|45|now()
100002|'William Shakespeare'|23|now()
  (SELECT COUNT(*) FROM table2)|'Robert Frost'|54|now()
- Cells containing text must be enclosed in inverted commas or else they would be interpreted as SQL keywords/identifiers
- Refer to the `resources` folder for .csv/.xsl file templates needed for table creation/insertion/deletion