semvec/pypi-packages huggingface dataset:
asana-exporter 1.0.0.post1
Python tool to extract data from Asana.
Requires Python: >=3.8

# Overview

Exports Asana projects along with their resources such as tasks, stories and attachments and saves as json in a tree structure making it easy to query with tools like [jq](https://stedolan.github.io/jq/) and import into other tools like Jira.

## Install

From pypi:

```
sudo apt install python3-pip
pip install asana-exporter
```

From snap:

```
sudo snap install asana-exporter
```

From source:

```
sudo apt install python3-pip
pip install -r requirements.txt
```

## Usage

The first action is to extract information from Asana using the API. To do this you will need to generate a Personal Access Token from the web UI - see https://developers.asana.com/docs/personal-access-token for instructions on how to do this.

Once you have a token, run this tool as follows to extract data. A team name and workspace are required (see https://developers.asana.com/docs/workspaces - this is usually your organisation name). Projects are extracted in the context of a team. You can extract multiple teams' projects into the same archive by running the tool multiple times with different teams.

If you want to start by getting a list of available teams you can do:

```
asana-exporter --token TOKEN --workspace WORKSPACE --export-path EXPORT_PATH --list-teams
```

Now you can choose a team and extract all of its projects:

```
asana-exporter --token TOKEN --workspace WORKSPACE --export-path EXPORT_PATH --team TEAM
```

If you do not want all projects you can filter project names:

```
asana-exporter --token TOKEN --workspace WORKSPACE --export-path EXPORT_PATH --team TEAM --project-filter "My\s+.+roject"
```

Once complete, your data will be under EXPORT_PATH and you can query it e.g.

List all teams found:

```
asana-exporter --export-path EXPORT_PATH --list-teams
```

List all extracted projects for a given team:

```
asana-exporter --token TOKEN --workspace WORKSPACE --export-path EXPORT_PATH --team "My Team" --list-projects
```

List all extracted tasks for a given project:

```
asana-exporter --token TOKEN --workspace WORKSPACE --export-path EXPORT_PATH --team "My Team" --list-project-tasks "My Project"
```
pyhgl 0.2.0
a Python-based Hardware Generation Language
Requires Python: >=3.8


# PyHGL

PyHGL is a simple and flexible **Py**thon based **H**ardware **G**eneration **L**anguage. PyHGL has rich features including:

- A few but necessary extended grammars to reduce grammar noises
- RTL and Gate Level hardware description, generates SystemVerilog files
- Support any two-valued logic circuit, including multi-clocks and combinational loop 
- Object-oriented modeling, easy to distinguish between synthetic and not synthetic 
- Asynchronous delay accurate event based simulation in pure Python 
- SVA like assertions for verification

--- 

- Documentation 
- Similar Projects 
  
  [https://github.com/drom/awesome-hdl](https://github.com/drom/awesome-hdl)


# Install

```
python -m pip install pyhgl
``` 

# Examples 

## N-bit Adder 

```py
from pyhgl.logic import *
import random

@module FullAdder:
    a, b, cin = UInt('0'), UInt('0'), UInt('0')
    s = a ^ b ^ cin 
    cout = a & b | (a ^ b) & cin 

@module AdderN(w: int):
    x = UInt[w](0)
    y = UInt[w](0)
    out = UInt[w](0)

    adders = Array(FullAdder() for _ in range(w))
    adders[:,'a'] <== x.split()
    adders[:,'b'] <== y.split()
    adders[1:, 'cin'] <== adders[:-1, 'cout']
    out <== Cat(adders[:,'s']) 
    cout = adders[-1, 'cout']

#--------------------------------- test ----------------------------------

with Session() as sess:
    w = 8
    mask = (1 << w) - 1 
    dut = AdderN(w)
    sess.track(dut.x, dut.y, dut.out)

    for _ in range(100):
        x = random.randint(0, mask)
        y = random.randint(0, mask)
        setv(dut.x, x) 
        setv(dut.y, y) 
        sess.step(100) 
        out = getv(dut.out)
        print(f'{x} + {y} = {out}\t{(x+y)&mask==out}') 

    sess.dumpVCD('Adder.vcd')
    sess.dumpVerilog('Adder.sv')
    sess.dumpGraph('Adder.gv')
    print(sess)
``` 

## Vending Machine 


```py 
@module VendingMachine:
    nickel, dime, valid = UInt('0'), UInt('0'), UInt('0') 
 
    switch s:=EnumReg():
        once 'sIdle':
            when nickel: 
                s <== 's5'
            when dime:
                s <== 's10' 
        once 's5':
            when nickel:
                s <== 's10'
            when dime: 
                s <== 's15'
        once 's10':
            when nickel: 
                s <== 's15'
            when dime: 
                s <== 'sOk' 
        once 's15': 
            when nickel: 
                s <== 'sOk'
            when dime: 
                s <== 'sOk'
        once 'sOk':
            s <== 'sIdle'
            valid <== 1
```