Metadata-Version: 2.1
Name: bestpractice
Version: 0.0.1
Summary: this is a description
Home-page: https://github.com/zk4/bestpractice
Author: zk
Author-email: liuzq7@gmail.com
License: BSD
Download-URL: https://github.com/zk4/bestpractice/archive/master.zip
Keywords: best practice for python project
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Requires-Python: >3.0.0
Description-Content-Type: text/markdown
Requires-Dist: setuptools (==40.6.3)
Requires-Dist: pytest (==5.2.1)
Requires-Dist: PyYAML (==5.3.1)

# intro
suppose you want to make a comand line tool called bestpractice.
it accept integer as numbers
ouput carrots we need to feed
```
ex:
	cmd> bestpractice 2 
	ouput: 4
```

we can get the output by two ways:
- command line
	```bash
	 bestpractice  2
	```

- call python moudle 
  ``` bash
  python -m bestpractice 2
  ```



# best practice schema 
##  env 
Generated by `make env`

This is first step you need to do in any python project
- it will create a virtual env
- auto source it 
- install requirements for the start up

## test 
run `make test`


## run
`make run ` will run in module mode 
`make main` will run in normal mode


You can see that `main.py` and `bestpractice/__main__.py` are the same  content file.

why do we need `main.py` ? 
It is eay to make an  entry in IDE , like intellij.


Could I just use `__main__.py` to run  like this?
``` bash
python bestpractice/__main__.py
```
You cound not.

That is because the top-level package problem.

Ex:
```
python main.py 
top-level package is the same as main.py

python src/func/main.py  
top-level package is the same as main.py, aka func 
top-level package is the folder where you run this command from
```

So , why `bestpractice/__main__.py` does not work?

because top-level package is bestpractice now.


## logging 
  Always use logging for log print,don`t use `print`
  logging config is controlled by `logging.yml`, which can control every module level
  call `setup_logging` in main file (ra)

## make module
  update readmeput moudle in the folder parallel with logx folder.

  - logx 
  - your_module


## packing module or cmd

###  local 
for quick test purpose
- install: `pip install .` 
- uninstall: `pip uninstall <module_name>`

> make install
> make uninstall


### upload to test or prod PYPI server 
upload to test server:
```
make upload-to-test 
```

upload to prod server:
```
make upload-to-prod
```

### test and coverage 

#### pure test
```
make test
```

#### test with coverage
```
make coverage
```

