semvec/pypi-packages huggingface dataset:
py-neonUtilities 0.5.4
A native python wrapper for the NEON ecological database api
Requires Python: >=3.6
Keywords: NEON data ecology api

# Py-NEONutilities

This project is a heavy work in progress to write a native python wrapper for the [NEON data platform](https://data.neonscience.org).
It aims to provide the functionality of the [NEONutilities R package](https://github.com/NEONScience/NEON-utilities/tree/master/neonUtilities)
without the overhead of having to manage `rpy`.

## Installation
You can install this package from pypi with `pip install py-neonUtils`

Please see the pypi branch for downloads.

## Usage:

### Observational Data
```python
from neonUtilities.NeonObservational import NeonObservational
import pandas as pd

neonobj = NeonObservational(dpID="DP1.10003.001", site=["WOOD"], dates=["2015-07",["2017-07","2017-12"]], package="basic")
#Download data from 2015-07 and the range of 2017-07 to 2017-12.

neonobj.download()
neonobj.stackByTable()
df = neonobj.to_pandas()
```
### Instrumental Data 
```python
from neonUtilities.NeonObservational import NeonObservational
import pandas as pd

neonobj = NeonInstrumental(dpID="DP1.10003.001", site=["WOOD"], dates=["2015-07",["2017-07","2017-12"]], avg=30, package="basic")

neonobj.download()
neonobj.stackByTable()
df = neonobj.to_pandas()
```

This module offers a lot of flexibility with month-chunk downloads. You can provide:
1. A single string to download that chunk for all sites
2. A list of strings to download those chunks for all sites
3. Either a nested list or a nested tuple of dates to download that range inclusive,inclusive
4. Any combination of 2 and 3
5. A dictionary with sites as keys and number any date definition above to download different month chunks for different sites.



## Progress
- [X] Observational data
  - [X] Download data zips 
  - [X] Table stacking
  - [ ] Support for READMEs, EML and variables files
- [X] Instrumental data
  - [X] Download specific average intervals
- [ ] AOP data
- [ ] EC data
- [ ] Taxon data manip
- [X] API token
- [X] package for pypi (check the pypi branch)
ruqqus-api 0.4.4
Unofficial Ruqqus API Wrapper

# ruqqus-api

This is a shitty, patched-together, unoffical API for the website ruqqus.com. This library uses 3 "different" apis. Create a RuqqusAPI object like so:

```
from ruqqus import RuqqusAPI

ruqqus = RuqqusAPI("username", "password")
```

If the login is a success, you shouldn't see any message. I'm using `requests.Session()` to save cookies and stuff, so thats accessable at `ruqqus.session` if you wanna mess around. Technically the Official v1 api methods don't need authentication, and neither do some other functons.

## Official v1
This uses their official v1 json api. All of these (very limited) functions work.

* guild(boardname) - returns json info about the specified board
* user(username) - returns json info about the specified user
* post(pid) - returns json info about the specified post referred to by its id (eg: "wmi")
* comment(cid) - returns json info about specified comment by id

## Unofficial v1
These were written from me studying the [ruqqus source code](https://github.com/ruqqus/ruqqus). As of now, none of them work, all returning server errors. The only reason i called them unofficial v1 was because the request url begins with /api/v1 and they use the @api wrapper.

* post_pid_comment_cid(pid, cid)
* delete_comment(cid)
* board_listing(boardname)
* user_listing(username)

# unofficial
A lot of these routes begin with /api, some dont. I think they all mostly work with various levels of success.

* feeds_public(sort="hot") - returns atoma listing (no clue what this is, but it works). seems to work only the first time, probably because its somewhat RSS-like
* api_comment(submission, parent_fullname, body) - I haven't gotten this to work, mainly because in the source code it mentions it requires a verified form value or whatever, also because i dunno what submission and parent_fullname refer to
* board_available(name) - checks if boardname is available. works every time, 80% of the time
* subscribe_board(boardname) and unsubscribe_board(boardname) - you can guess what these do. they work
* name_available(username) - checks if username is available. i think this works when the name is not available?
* follow_user(username) and unfollow_user(username) - havent tested this but it probably works
* agree_tos - agrees to the terms of service, presumably
* user_profile_pic(username) - you can also get this info through the official api v1 `user` function
* vote_post(post_id, x="1") and vote_comment(comment_id, x="1") - these dont work, idk why, it seems like x should be either -1. 0, or 1