haxor


Namehaxor JSON
Version 1.2.4 PyPI version JSON
download
home_pagehttps://github.com/avinassh/haxor/
SummaryUnofficial Python wrapper for Hacker News API
upload_time2023-12-11 12:13:28
maintainer
docs_urlNone
authorAvinash Sajjanshetty
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements aiohttp requests
Travis-CI
coveralls test coverage No coveralls.
            # haxor

![build](https://img.shields.io/github/actions/workflow/status/avinassh/haxor/pytest.yml)
[![coverall](https://coveralls.io/repos/github/avinassh/haxor/badge.svg?branch=master)](https://coveralls.io/github/avinassh/haxor?branch=master)
[![version](https://img.shields.io/pypi/v/haxor.svg)](https://pypi.python.org/pypi/haxor/)
[![supported](https://img.shields.io/pypi/pyversions/haxor.svg)](https://pypi.python.org/pypi/haxor/)
![license](https://img.shields.io/pypi/l/haxor.svg)

Unofficial Python wrapper for official Hacker News API.

Installation
============
```python
pip install haxor
```
Usage
=====

### Import and initialization:
```python
from hackernews import HackerNews
hn = HackerNews()
```

### Items
Stories, comments, jobs, Ask HNs and even polls are just items with unique item id.

To query item information by id:
```python
item = hn.get_item(8863)
# >>> item.title
# 'My YC app: Dropbox - Throw away your USB drive'
# >>> item.item_type
# 'story'
# >>> item.kids
# [ 8952, 9224, 8917, ...]
```
Since most results are returned as integer IDs (like item.kids above), these results require further iteration.  Instead of doing this yourself, use the `expand` flag to get object-oriented, detailed item info by id:
```python
item = hn.get_item(8863, expand=True)
# >>> item.kids
# [<hackernews.Item: 9224 - None>, <hackernews.Item: 8952 - None>, ...]
# >>> item.by
# <hackernews.User: dhouston>
```

To query a list of Item IDs:
```python
items = hn.get_items_by_ids([8863, 37236, 2345])
# >>> items
# [<hackernews.Item: 8863 - My YC app: Dropbox - Throw away your USB drive>, <hackernews.Item:
# 37236 - None>, <hackernews.Item: 2345 - The Best Buy Scam.>]
```
Use the `item_type` filter to specifically select 'story', 'comment', 'job', or 'poll' items:
```python
items = hn.get_items_by_ids([8863, 37236, 2345], item_type='story')
# >>> items
# [<hackernews.Item: 8863 - My YC app: Dropbox - Throw away your USB drive>, <hackernews.Item: # 2345 - The Best Buy Scam.>]
```

#### Stories
The HN API allows for real-time querying for New, Top, Best, Ask HN, Show HN, and Jobs stories.

As an example, to get Item objects of current top stories:
```python
top_stories = hn.top_stories()
# >>> top_stories
# [<hackernews.Item: 16924667 - Ethereum Sharding FAQ>, ...]
```

#### Useful Item Queries

To get current largest Item id (most recent story, comment, job, or poll):
```python
max_item = hn.get_max_item()
# >>> max_item
# 16925673
```
Once again, use the `expand` flag to get an object-oriented, detailed Item representation:
```python
max_item = hn.get_max_item(expand=True)
# >>> max_item
# <hackernews.Item: 16925673 - None>
```

To get the x most recent Items:
```python
last_ten = hn.get_last(10)
# >>> last_ten
# [<hackernews.Item: 16925688 - Show HN: Eventbot – Group calendar for Slack teams>, ...]
```

### Users
HN users are also queryable.

To query users by user_id (i.e. username on Hacker News):
```python
user = hn.get_user('pg')
# >>> user.user_id
# 'pg'
# >>> user.karma
# 155040
```
Use the `expand` flag to get an object-oriented, detailed Item representation for User attributes:
```python
user = hn.get_user('dhouston', expand=True)
# >>> user.stories
# [<hackernews.Item: 1481914 - Dropbox is hiring a Web Engineer>, ...]
# >>> user.comments
# [<hackernews.Item: 16660140 - None>, <hackernews.Item: 15692914 - None>, ...]
# >>> user.jobs
# [<hackernews.Item: 3955262 - Dropbox seeking iOS and Android engineers>, ...]
```

To query a list of users:
```python
users = hn.get_users_by_ids(['pg','dhouston'])
# >>> users
# [<hackernews.User: pg>, <hackernews.User: dhouston>]
```

Examples
========

Get top 10 stories:
```python
hn.top_stories(limit=10)

# [<hackernews.Item: 16924667 - Ethereum Sharding FAQ>, <hackernews.Item: 16925499 - PipelineDB # v0.9.9 – One More Release Until PipelineDB Is a PostgreSQL Extension>, ...]
```

Find all the 'jobs' post from Top Stories:
```python
stories = hn.top_stories()
for story in stories:
    if story.item_type == 'job':
        print(story)

# <hackernews.Item: 16925047 - Taplytics (YC W14) is solving hard engineering problems in
# Toronto and hiring>
# ...
# ...
```

Find Python jobs from monthly who is hiring thread:
```python
# Who is hiring - April 2018
# https://news.ycombinator.com/item?id=16735011

who_is_hiring = hn.get_item(16735011, expand=True)

for comment in who_is_hiring.kids:
    if 'python' in comment.text.lower():
        print(comment)

# <hackernews.Item: 16735358 - None>
# <hackernews.Item: 16737152 - None>
# ...
# ...
```

API Reference
=============

Class: `HackerNews`
===================

**Parameters:**

| Name       | Type   | Required  | Description                           | Default
| ---------- | ------ | --------- | ------------------------------------- | --------
| `version`  | string | No        | specifies Hacker News API version     | `v0`

`get_item`
----------

Description: Returns `Item` object

**Parameters:**


| Name       | Type      | Required | Description                         | Default
| ---------- | --------- | -------- | ----------------------------------- | -------
| `item_id`  | string/int| Yes      | unique item id of Hacker News story, comment etc | None
| `expand`   | bool      | No       | flag to indicate whether to transform all IDs into objects | False

`get_items_by_ids`
----------

Description: Returns list of `Item` objects

**Parameters:**


| Name       | Type      | Required | Description                         | Default
| ---------- | --------- | -------- | ----------------------------------- | -------
| `item_ids`  | list of string/int | Yes      | unique item ids of Hacker News stories, comments etc | None
| `item_type`   | string      | No       | item type to filter results with | None

`get_user`
----------

Description: Returns `User` object

**Parameters:**

| Name         | Type     | Required   | Description                     | Default
| ------------ | -------- | ---------- | ------------------------------- | ---------
| `user_id`    | string   | Yes        | unique user id of a Hacker News user | None
| `expand`   | bool      | No       | flag to indicate whether to transform all IDs into objects | False

`get_users_by_ids`
----------

Description: Returns list of `User` objects

**Parameters:**

| Name         | Type     | Required   | Description                     | Default
| ------------ | -------- | ---------- | ------------------------------- | ---------
| `user_ids`    | list of string/int  | Yes        | unique user ids of Hacker News users | None


`top_stories`
-------------

Description: Returns list of `Item` objects of current top stories

**Parameters:**

| Name      | Type  | Required  | Description                           | Default
| --------- | ----- | --------- | ------------------------------------- | --------
| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False
| `limit`   | int   | No        | specifies the number of stories to be returned  | None


`new_stories`
-------------

Description: Returns list of `Item` objects of current new stories

**Parameters:**

| Name      | Type  | Required  | Description                           | Default
| --------- | ----- | --------- | ------------------------------------- | --------
| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False
| `limit`   | int   | No        | specifies the number of stories to be returned  | None


`ask_stories`
-------------

Description: Returns list of `Item` objects of latest Ask HN stories

**Parameters:**

| Name      | Type  | Required  | Description                           | Default
| --------- | ----- | --------- | ------------------------------------- | --------
| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False
| `limit`   | int   | No        | specifies the number of stories to be returned  | None


`show_stories`
-------------

Description: Returns list of `Item` objects of latest Show HN stories

**Parameters:**

| Name      | Type  | Required  | Description                           | Default
| --------- | ----- | --------- | ------------------------------------- | --------
| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False
| `limit`   | int   | No        | specifies the number of stories to be returned  | None


`job_stories`
-------------

Description: Returns list of `Item` objects of latest Job stories

**Parameters:**

| Name      | Type  | Required  | Description                           | Default
| --------- | ----- | --------- | ------------------------------------- | --------
| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False
| `limit`   | int   | No        | specifies the number of stories to be returned  | None


`updates`
--------------

Description: Returns list of `Item` and `User` objects that have been changed/updated recently.

**Parameters:**
N/A

`get_max_item`
--------------

Description: Returns current largest item id or current largest `Item` object

**Parameters:**

| Name         | Type     | Required   | Description                     | Default
| ------------ | -------- | ---------- | ------------------------------- | ---------
| `expand`   | bool      | No       | flag to indicate whether to transform ID into object | False

`get_all`
--------------

Description: Returns all `Item` objects from HN

**Parameters:**
N/A

`get_last`
--------------

Description: Returns list of `num` most recent `Item` objects

**Parameters:**

| Name         | Type     | Required   | Description                     | Default
| ------------ | -------- | ---------- | ------------------------------- | ---------
| `num`   | int      | No       | numbr of most recent records to pull from HN | 10

Class: `Item`
=============

From [Official HackerNews
Item](https://github.com/HackerNews/API/blob/master/README.md#items):

| Property    | Description
| ----------- | ------------------------------------------------------------
| item_id     | The item’s unique id.
| deleted     | `true` if the item is deleted.
| item_type   | The type of item. One of “job”, “story”, “comment”, “poll”, or “pollopt”.
| by          | The username of the item’s author.
| submission_time  | Creation date of the item, in Python `datetime`.
| text        | The comment, Ask HN, or poll text. HTML.
| dead        | `true` if the item is dead.
| parent      | The item’s parent. For comments, either another comment or the relevant story. For pollopts, the relevant poll.
| poll        | The ids of poll's.
| kids        | The ids of the item’s comments, in ranked display order.
| url         | The URL of the story.
| score       | The story’s score, or the votes for a pollopt.
| title       | The title of the story or poll.
| parts       | A list of related pollopts, in display order.
| descendants | In the case of stories or polls, the total comment count.
| raw         | original JSON response.


Class: `User`
=============

From [Official HackerNews
User](https://github.com/HackerNews/API/blob/master/README.md#users):

| Property  | Description
| --------- | -------------------------------------------------------------
| user_id   | The user’s unique username. Case-sensitive.
| delay     | Delay in minutes between a comment’s creation and its visibility to other users.
| created   | Creation date of the user, in Python `datetime`.
| karma     | The user’s karma.
| about     | The user’s optional self-description. HTML.
| submitted | List of the user’s stories, polls and comments.
| raw       | original JSON response.

Additional properties when `expand` is used

| Property    | Description
| ----------- | ------------------------------------------------------------
| stories  | The user’s submitted stories.
| comments     | The user's submitted comments.
| jobs   | The user's submitted jobs.
| polls   | The user's submitted polls.
| pollopts   | The user's submitted poll options.

Development
===========

For local development do `pip` installation of `requirements-dev.txt`:

    pip install -r requirements-dev.txt

Testing
=======

Run the test suite by running:

    echo "0.0.0-dev" > version.txt
    python setup.py develop
    pytest tests

LICENSE
=======

The mighty MIT license. Please check `LICENSE` for more details.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/avinassh/haxor/",
    "name": "haxor",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Avinash Sajjanshetty",
    "author_email": "a@sajjanshetty.com",
    "download_url": "https://files.pythonhosted.org/packages/a7/06/a84ad7ab37f2bccf2a8430e64541c90ae633dfc6e852364052a27c64722c/haxor-1.2.4.tar.gz",
    "platform": null,
    "description": "# haxor\n\n![build](https://img.shields.io/github/actions/workflow/status/avinassh/haxor/pytest.yml)\n[![coverall](https://coveralls.io/repos/github/avinassh/haxor/badge.svg?branch=master)](https://coveralls.io/github/avinassh/haxor?branch=master)\n[![version](https://img.shields.io/pypi/v/haxor.svg)](https://pypi.python.org/pypi/haxor/)\n[![supported](https://img.shields.io/pypi/pyversions/haxor.svg)](https://pypi.python.org/pypi/haxor/)\n![license](https://img.shields.io/pypi/l/haxor.svg)\n\nUnofficial Python wrapper for official Hacker News API.\n\nInstallation\n============\n```python\npip install haxor\n```\nUsage\n=====\n\n### Import and initialization:\n```python\nfrom hackernews import HackerNews\nhn = HackerNews()\n```\n\n### Items\nStories, comments, jobs, Ask HNs and even polls are just items with unique item id.\n\nTo query item information by id:\n```python\nitem = hn.get_item(8863)\n# >>> item.title\n# 'My YC app: Dropbox - Throw away your USB drive'\n# >>> item.item_type\n# 'story'\n# >>> item.kids\n# [ 8952, 9224, 8917, ...]\n```\nSince most results are returned as integer IDs (like item.kids above), these results require further iteration.  Instead of doing this yourself, use the `expand` flag to get object-oriented, detailed item info by id:\n```python\nitem = hn.get_item(8863, expand=True)\n# >>> item.kids\n# [<hackernews.Item: 9224 - None>, <hackernews.Item: 8952 - None>, ...]\n# >>> item.by\n# <hackernews.User: dhouston>\n```\n\nTo query a list of Item IDs:\n```python\nitems = hn.get_items_by_ids([8863, 37236, 2345])\n# >>> items\n# [<hackernews.Item: 8863 - My YC app: Dropbox - Throw away your USB drive>, <hackernews.Item:\n# 37236 - None>, <hackernews.Item: 2345 - The Best Buy Scam.>]\n```\nUse the `item_type` filter to specifically select 'story', 'comment', 'job', or 'poll' items:\n```python\nitems = hn.get_items_by_ids([8863, 37236, 2345], item_type='story')\n# >>> items\n# [<hackernews.Item: 8863 - My YC app: Dropbox - Throw away your USB drive>, <hackernews.Item: # 2345 - The Best Buy Scam.>]\n```\n\n#### Stories\nThe HN API allows for real-time querying for New, Top, Best, Ask HN, Show HN, and Jobs stories.\n\nAs an example, to get Item objects of current top stories:\n```python\ntop_stories = hn.top_stories()\n# >>> top_stories\n# [<hackernews.Item: 16924667 - Ethereum Sharding FAQ>, ...]\n```\n\n#### Useful Item Queries\n\nTo get current largest Item id (most recent story, comment, job, or poll):\n```python\nmax_item = hn.get_max_item()\n# >>> max_item\n# 16925673\n```\nOnce again, use the `expand` flag to get an object-oriented, detailed Item representation:\n```python\nmax_item = hn.get_max_item(expand=True)\n# >>> max_item\n# <hackernews.Item: 16925673 - None>\n```\n\nTo get the x most recent Items:\n```python\nlast_ten = hn.get_last(10)\n# >>> last_ten\n# [<hackernews.Item: 16925688 - Show HN: Eventbot \u2013 Group calendar for Slack teams>, ...]\n```\n\n### Users\nHN users are also queryable.\n\nTo query users by user_id (i.e. username on Hacker News):\n```python\nuser = hn.get_user('pg')\n# >>> user.user_id\n# 'pg'\n# >>> user.karma\n# 155040\n```\nUse the `expand` flag to get an object-oriented, detailed Item representation for User attributes:\n```python\nuser = hn.get_user('dhouston', expand=True)\n# >>> user.stories\n# [<hackernews.Item: 1481914 - Dropbox is hiring a Web Engineer>, ...]\n# >>> user.comments\n# [<hackernews.Item: 16660140 - None>, <hackernews.Item: 15692914 - None>, ...]\n# >>> user.jobs\n# [<hackernews.Item: 3955262 - Dropbox seeking iOS and Android engineers>, ...]\n```\n\nTo query a list of users:\n```python\nusers = hn.get_users_by_ids(['pg','dhouston'])\n# >>> users\n# [<hackernews.User: pg>, <hackernews.User: dhouston>]\n```\n\nExamples\n========\n\nGet top 10 stories:\n```python\nhn.top_stories(limit=10)\n\n# [<hackernews.Item: 16924667 - Ethereum Sharding FAQ>, <hackernews.Item: 16925499 - PipelineDB # v0.9.9 \u2013 One More Release Until PipelineDB Is a PostgreSQL Extension>, ...]\n```\n\nFind all the 'jobs' post from Top Stories:\n```python\nstories = hn.top_stories()\nfor story in stories:\n    if story.item_type == 'job':\n        print(story)\n\n# <hackernews.Item: 16925047 - Taplytics (YC W14) is solving hard engineering problems in\n# Toronto and hiring>\n# ...\n# ...\n```\n\nFind Python jobs from monthly who is hiring thread:\n```python\n# Who is hiring - April 2018\n# https://news.ycombinator.com/item?id=16735011\n\nwho_is_hiring = hn.get_item(16735011, expand=True)\n\nfor comment in who_is_hiring.kids:\n    if 'python' in comment.text.lower():\n        print(comment)\n\n# <hackernews.Item: 16735358 - None>\n# <hackernews.Item: 16737152 - None>\n# ...\n# ...\n```\n\nAPI Reference\n=============\n\nClass: `HackerNews`\n===================\n\n**Parameters:**\n\n| Name       | Type   | Required  | Description                           | Default\n| ---------- | ------ | --------- | ------------------------------------- | --------\n| `version`  | string | No        | specifies Hacker News API version     | `v0`\n\n`get_item`\n----------\n\nDescription: Returns `Item` object\n\n**Parameters:**\n\n\n| Name       | Type      | Required | Description                         | Default\n| ---------- | --------- | -------- | ----------------------------------- | -------\n| `item_id`  | string/int| Yes      | unique item id of Hacker News story, comment etc | None\n| `expand`   | bool      | No       | flag to indicate whether to transform all IDs into objects | False\n\n`get_items_by_ids`\n----------\n\nDescription: Returns list of `Item` objects\n\n**Parameters:**\n\n\n| Name       | Type      | Required | Description                         | Default\n| ---------- | --------- | -------- | ----------------------------------- | -------\n| `item_ids`  | list of string/int | Yes      | unique item ids of Hacker News stories, comments etc | None\n| `item_type`   | string      | No       | item type to filter results with | None\n\n`get_user`\n----------\n\nDescription: Returns `User` object\n\n**Parameters:**\n\n| Name         | Type     | Required   | Description                     | Default\n| ------------ | -------- | ---------- | ------------------------------- | ---------\n| `user_id`    | string   | Yes        | unique user id of a Hacker News user | None\n| `expand`   | bool      | No       | flag to indicate whether to transform all IDs into objects | False\n\n`get_users_by_ids`\n----------\n\nDescription: Returns list of `User` objects\n\n**Parameters:**\n\n| Name         | Type     | Required   | Description                     | Default\n| ------------ | -------- | ---------- | ------------------------------- | ---------\n| `user_ids`    | list of string/int  | Yes        | unique user ids of Hacker News users | None\n\n\n`top_stories`\n-------------\n\nDescription: Returns list of `Item` objects of current top stories\n\n**Parameters:**\n\n| Name      | Type  | Required  | Description                           | Default\n| --------- | ----- | --------- | ------------------------------------- | --------\n| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False\n| `limit`   | int   | No        | specifies the number of stories to be returned  | None\n\n\n`new_stories`\n-------------\n\nDescription: Returns list of `Item` objects of current new stories\n\n**Parameters:**\n\n| Name      | Type  | Required  | Description                           | Default\n| --------- | ----- | --------- | ------------------------------------- | --------\n| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False\n| `limit`   | int   | No        | specifies the number of stories to be returned  | None\n\n\n`ask_stories`\n-------------\n\nDescription: Returns list of `Item` objects of latest Ask HN stories\n\n**Parameters:**\n\n| Name      | Type  | Required  | Description                           | Default\n| --------- | ----- | --------- | ------------------------------------- | --------\n| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False\n| `limit`   | int   | No        | specifies the number of stories to be returned  | None\n\n\n`show_stories`\n-------------\n\nDescription: Returns list of `Item` objects of latest Show HN stories\n\n**Parameters:**\n\n| Name      | Type  | Required  | Description                           | Default\n| --------- | ----- | --------- | ------------------------------------- | --------\n| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False\n| `limit`   | int   | No        | specifies the number of stories to be returned  | None\n\n\n`job_stories`\n-------------\n\nDescription: Returns list of `Item` objects of latest Job stories\n\n**Parameters:**\n\n| Name      | Type  | Required  | Description                           | Default\n| --------- | ----- | --------- | ------------------------------------- | --------\n| `raw`   | bool   | No        | indicate whether to represent all objects in raw json  | False\n| `limit`   | int   | No        | specifies the number of stories to be returned  | None\n\n\n`updates`\n--------------\n\nDescription: Returns list of `Item` and `User` objects that have been changed/updated recently.\n\n**Parameters:**\nN/A\n\n`get_max_item`\n--------------\n\nDescription: Returns current largest item id or current largest `Item` object\n\n**Parameters:**\n\n| Name         | Type     | Required   | Description                     | Default\n| ------------ | -------- | ---------- | ------------------------------- | ---------\n| `expand`   | bool      | No       | flag to indicate whether to transform ID into object | False\n\n`get_all`\n--------------\n\nDescription: Returns all `Item` objects from HN\n\n**Parameters:**\nN/A\n\n`get_last`\n--------------\n\nDescription: Returns list of `num` most recent `Item` objects\n\n**Parameters:**\n\n| Name         | Type     | Required   | Description                     | Default\n| ------------ | -------- | ---------- | ------------------------------- | ---------\n| `num`   | int      | No       | numbr of most recent records to pull from HN | 10\n\nClass: `Item`\n=============\n\nFrom [Official HackerNews\nItem](https://github.com/HackerNews/API/blob/master/README.md#items):\n\n| Property    | Description\n| ----------- | ------------------------------------------------------------\n| item_id     | The item\u2019s unique id.\n| deleted     | `true` if the item is deleted.\n| item_type   | The type of item. One of \u201cjob\u201d, \u201cstory\u201d, \u201ccomment\u201d, \u201cpoll\u201d, or \u201cpollopt\u201d.\n| by          | The username of the item\u2019s author.\n| submission_time  | Creation date of the item, in Python `datetime`.\n| text        | The comment, Ask HN, or poll text. HTML.\n| dead        | `true` if the item is dead.\n| parent      | The item\u2019s parent. For comments, either another comment or the relevant story. For pollopts, the relevant poll.\n| poll        | The ids of poll's.\n| kids        | The ids of the item\u2019s comments, in ranked display order.\n| url         | The URL of the story.\n| score       | The story\u2019s score, or the votes for a pollopt.\n| title       | The title of the story or poll.\n| parts       | A list of related pollopts, in display order.\n| descendants | In the case of stories or polls, the total comment count.\n| raw         | original JSON response.\n\n\nClass: `User`\n=============\n\nFrom [Official HackerNews\nUser](https://github.com/HackerNews/API/blob/master/README.md#users):\n\n| Property  | Description\n| --------- | -------------------------------------------------------------\n| user_id   | The user\u2019s unique username. Case-sensitive.\n| delay     | Delay in minutes between a comment\u2019s creation and its visibility to other users.\n| created   | Creation date of the user, in Python `datetime`.\n| karma     | The user\u2019s karma.\n| about     | The user\u2019s optional self-description. HTML.\n| submitted | List of the user\u2019s stories, polls and comments.\n| raw       | original JSON response.\n\nAdditional properties when `expand` is used\n\n| Property    | Description\n| ----------- | ------------------------------------------------------------\n| stories  | The user\u2019s submitted stories.\n| comments     | The user's submitted comments.\n| jobs   | The user's submitted jobs.\n| polls   | The user's submitted polls.\n| pollopts   | The user's submitted poll options.\n\nDevelopment\n===========\n\nFor local development do `pip` installation of `requirements-dev.txt`:\n\n    pip install -r requirements-dev.txt\n\nTesting\n=======\n\nRun the test suite by running:\n\n    echo \"0.0.0-dev\" > version.txt\n    python setup.py develop\n    pytest tests\n\nLICENSE\n=======\n\nThe mighty MIT license. Please check `LICENSE` for more details.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Unofficial Python wrapper for Hacker News API",
    "version": "1.2.4",
    "project_urls": {
        "Homepage": "https://github.com/avinassh/haxor/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "29c081c786882a7bd9ea62571b0c7b59f1e26c54058731561629381ab3cb0ab0",
                "md5": "0d5ffea1a4c1a91429406f906d59476e",
                "sha256": "dc2a4929b34a85f26a117d55867da718b1268329c05ab8932c1df19e6bf4132f"
            },
            "downloads": -1,
            "filename": "haxor-1.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0d5ffea1a4c1a91429406f906d59476e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 17110,
            "upload_time": "2023-12-11T12:13:27",
            "upload_time_iso_8601": "2023-12-11T12:13:27.376605Z",
            "url": "https://files.pythonhosted.org/packages/29/c0/81c786882a7bd9ea62571b0c7b59f1e26c54058731561629381ab3cb0ab0/haxor-1.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a706a84ad7ab37f2bccf2a8430e64541c90ae633dfc6e852364052a27c64722c",
                "md5": "745574c2a7983d4d756e16cff3d3e35e",
                "sha256": "d55a36001a535de5b97284830ee815bfbcb4aed59cefd9f17643f5aeeb0ccf60"
            },
            "downloads": -1,
            "filename": "haxor-1.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "745574c2a7983d4d756e16cff3d3e35e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 14006,
            "upload_time": "2023-12-11T12:13:28",
            "upload_time_iso_8601": "2023-12-11T12:13:28.871399Z",
            "url": "https://files.pythonhosted.org/packages/a7/06/a84ad7ab37f2bccf2a8430e64541c90ae633dfc6e852364052a27c64722c/haxor-1.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-11 12:13:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "avinassh",
    "github_project": "haxor",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    "==",
                    "3.9.1"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.21.0"
                ]
            ]
        }
    ],
    "lcname": "haxor"
}
        
Elapsed time: 0.46153s