# pqquotation
快速获取新浪/腾讯/东方财富的全市场行情,网络正常的情况下只需要 `200+ms`。本软件基于 [easyquotation](https://github.com/shidenggui/easyquotation)改进而来。
## 功能
* 获取新浪的免费实时行情
* 获取腾讯财经的免费实时行情
* 获取东方财富的免费实时行情
* 获取集思路的数据
* 智能轮询机制: sina → tencent → dc 循环轮询访问数据,避免被屏蔽
* 支持的股票代码格式多:
- 数字格式: 000001, 600000, 430047
- 前缀格式: sz000001, sh600000, bj430047
- 国标格式: 000001.SZ, 600000.SH, 430047.BJ
* 结果返回的股票代码默认格式是国标格式,例如 000001.SZ。也可以通过如下的函数设置输出数据的股票代码格式
- `pqquotation.enable_national_format_globally()` # 国标格式, 000001.SZ, 600000.SH, 430047.BJ
- `pqquotation.enable_prefix_format_globally()` #前缀格式, sz000001, sh600000, bj430047
- `pqquotation.enable_digit_format_globally()` # 数字格式, 000001, 600000, 430047
## 安装
```python
pip install pqquotation
```
## 用法
### 引入:
```python
import pqquotation
```
### 选择行情
```python
quotation = pqquotation.use('sina') # 新浪 ['sina'], 腾讯 ['tencent', 'qq'], 东方财富 ['dc', 'eastmoney']
```
### 获取所有股票行情
```python
# prefix 指定返回行情的股票代码是否带 sz/sh/bj 市场前缀
quotation.market_snapshot(prefix=True)
```
**return**
```python
{'sh000159': {'name': '国际实业', # 股票名
'buy': 8.87, # 竞买价
'sell': 8.88, # 竞卖价
'now': 8.88, # 现价
'open': 8.99, # 开盘价
'close': 8.96, # 昨日收盘价
'high': 9.15, # 今日最高价
'low': 8.83, # 今日最低价
'turnover': 22545048, # 交易股数
'volume': 202704887.74, # 交易金额
'ask1': 8.88, # 卖一价
'ask1_volume': 111900, # 卖一量
'ask2': 8.89,
'ask2_volume': 54700,
'bid1': 8.87, # 买一价
'bid1_volume': 21800, # 买一量
...
'bid2': 8.86,
'bid2_volume': 78400,
'date': '2016-02-19',
'time': '14:30:00',
...},
......
}
```
#### 单只股票
```python
quotation.real('162411') # 支持直接指定前缀,如 'sh000001'
```
#### 多只股票
```python
quotation.real(['000001', '162411'])
```
#### 多个服务器轮询调用
1. 智能轮询机制: sina → tencent → dc 循环轮询
2. 故障自动切换: 某个数据源失败时自动切换到下一个
3. 数据格式统一: 将tencent和dc的数据格式标准化为sina格式
4. 异常处理: 完整的重试机制和错误处理
5. 性能监控: 统计各数据源的成功率和响应时间
6. 多种别名支持: 'rr'、'roundrobin'、'round-robin'
```Python
import pqquotation
# 创建Round-robin实例
rr = pqquotation.use('roundrobin') # 或 'rr', 'round-robin'
# 获取实时行情
data = rr.real(['000001', '000002', '600000'])
# 查看数据源统计
stats = rr.get_source_stats()
# 重置失败状态
rr.reset_failed_sources()
```
#### 同时获取指数和行情
```python
# 获取相同代码的指数和股票时 prefix 必须为 True
quotation.real(['sh000001', 'sz000001'], prefix=True)
```
### 更新内置全市场股票代码
```python
easyquotation.update_stock_codes()
```
### 港股日k线图
*[腾讯日k线图](http://web.ifzq.gtimg.cn/appstock/app/hkfqkline/get?_var=kline_dayqfq¶m=hk00700,day,,,350,qfq&r=0.7773272375526847)*
```python
import easyquotation
quotation = easyquotation.use("daykline")
data = quotation.real(['00001','00700'])
print(data)
```
```python
{
'00001': [
['2017-10-09', '352.00', '349.00', '353.00', '348.60', '13455864.00'], # [日期, 今开, 今收, 最高, 最低, 成交量 ]
['2017-10-10', '350.80', '351.20', '352.60', '349.80', '10088970.00'],
]
'00700':[
]
}
}
```
### 腾讯港股实时行情
*[腾讯控股实时行情](http://sqt.gtimg.cn/utf8/q=r_hk00700)*
```python
import easyquotation
quotation = easyquotation.use("hkquote")
data = quotation.real(['00001','00700'])
print(data)
```
```python
{
'00001':
{
'stock_code': '00001', # 股票代码
'lotSize': '"100', # 每手数量
'name': '长和', # 股票名称
'price': '97.20', # 股票当前价格
'lastPrice': '97.75', # 股票昨天收盘价格
'openPrice': '97.75', # 股票今天开盘价格
'amount': '1641463.0', # 股票成交量
'time': '2017/11/29 15:38:58', # 当前时间
'high': '98.05', # 当天最高价格
'low': '97.15' # 当天最低价格
},
'00700':
{
'stock_code': '00700',
'lotSize': '"100',
'name': '腾讯控股',
'price': '413.20',
'lastPrice': '419.20',
'openPrice': '422.20',
'amount': '21351010.0',
'time': '2017/11/29 15:39:01',
'high': '422.80',
'low': '412.40'
}
}
```
### 选择 [jsl](https://www.jisilu.cn)(集思录) 行情
```python
quotation = easyquotation.use('jsl')
```
#### 设置 cookie (可选)
不设置的话获取相关数据有限制
```python
quotation.set_cookie('从浏览器获取的集思录 Cookie')
```
#### 指数ETF查询接口
**TIP :** 尚未包含黄金ETF和货币ETF
*[集思录ETF源网页](https://www.jisilu.cn/data/etf/#tlink_2)*
```python
quotation.etfindex(index_id="", min_volume=0, max_discount=None, min_discount=None)
```
**return**
```python
{
"510050": {
"fund_id": "510050", # 代码
"fund_nm": "50ETF", # 名称
"price": "2.066", # 现价
"increase_rt": "0.34%", # 涨幅
"volume": "71290.96", # 成交额(万元)
"index_nm": "上证50", # 指数
"pe": "9.038", # 指数PE
"pb": "1.151", # 指数PB
"index_increase_rt": "0.45%", # 指数涨幅
"estimate_value": "2.0733", # 估值
"fund_nav": "2.0730", # 净值
"nav_dt": "2016-03-11", # 净值日期
"discount_rt": "-0.34%", # 溢价率
"creation_unit": "90", # 最小申赎单位(万份)
"amount": "1315800", # 份额
"unit_total": "271.84", # 规模(亿元)
"index_id": "000016", # 指数代码
"last_time": "15:00:00", # 价格最后时间(未确定)
"last_est_time": "23:50:02", # 估值最后时间(未确定)
}
}
```
## TODO
* [x] 检查数据源 sina,qq,dc,访问数据是否完毕,数据是否一致。sina和dc的数据比较一致,qq的volume字段有些问题
* [x] 增加自动切换服务器的功能,避免长时间连接一个服务器导致屏蔽连接
* [x] 支持多种股票代码格式,支持结果中股票代码格式设置
Raw data
{
"_id": null,
"home_page": "https://github.com/bushuhui/pqquotation",
"name": "pqquotation",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "China stock trade",
"author": "bushuhui",
"author_email": "bushuhui@foxmail.com",
"download_url": "https://files.pythonhosted.org/packages/0a/6e/04543e239ea0a38bbe0b7da74817ed1cb592dab98d5d8532b7b4da0edd9f/pqquotation-0.8.3.tar.gz",
"platform": null,
"description": "# pqquotation\n\n\n\u5feb\u901f\u83b7\u53d6\u65b0\u6d6a/\u817e\u8baf/\u4e1c\u65b9\u8d22\u5bcc\u7684\u5168\u5e02\u573a\u884c\u60c5\uff0c\u7f51\u7edc\u6b63\u5e38\u7684\u60c5\u51b5\u4e0b\u53ea\u9700\u8981 `200+ms`\u3002\u672c\u8f6f\u4ef6\u57fa\u4e8e [easyquotation](https://github.com/shidenggui/easyquotation)\u6539\u8fdb\u800c\u6765\u3002\n\n## \u529f\u80fd\n* \u83b7\u53d6\u65b0\u6d6a\u7684\u514d\u8d39\u5b9e\u65f6\u884c\u60c5\n* \u83b7\u53d6\u817e\u8baf\u8d22\u7ecf\u7684\u514d\u8d39\u5b9e\u65f6\u884c\u60c5\n* \u83b7\u53d6\u4e1c\u65b9\u8d22\u5bcc\u7684\u514d\u8d39\u5b9e\u65f6\u884c\u60c5\n* \u83b7\u53d6\u96c6\u601d\u8def\u7684\u6570\u636e\n* \u667a\u80fd\u8f6e\u8be2\u673a\u5236: sina \u2192 tencent \u2192 dc \u5faa\u73af\u8f6e\u8be2\u8bbf\u95ee\u6570\u636e\uff0c\u907f\u514d\u88ab\u5c4f\u853d\n* \u652f\u6301\u7684\u80a1\u7968\u4ee3\u7801\u683c\u5f0f\u591a:\n - \u6570\u5b57\u683c\u5f0f: 000001, 600000, 430047\n - \u524d\u7f00\u683c\u5f0f: sz000001, sh600000, bj430047\n - \u56fd\u6807\u683c\u5f0f: 000001.SZ, 600000.SH, 430047.BJ\n* \u7ed3\u679c\u8fd4\u56de\u7684\u80a1\u7968\u4ee3\u7801\u9ed8\u8ba4\u683c\u5f0f\u662f\u56fd\u6807\u683c\u5f0f\uff0c\u4f8b\u5982 000001.SZ\u3002\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5982\u4e0b\u7684\u51fd\u6570\u8bbe\u7f6e\u8f93\u51fa\u6570\u636e\u7684\u80a1\u7968\u4ee3\u7801\u683c\u5f0f\n - `pqquotation.enable_national_format_globally()` # \u56fd\u6807\u683c\u5f0f, 000001.SZ, 600000.SH, 430047.BJ\n - `pqquotation.enable_prefix_format_globally()` #\u524d\u7f00\u683c\u5f0f\uff0c sz000001, sh600000, bj430047\n - `pqquotation.enable_digit_format_globally()` # \u6570\u5b57\u683c\u5f0f\uff0c 000001, 600000, 430047\n\n## \u5b89\u88c5\n\n```python\npip install pqquotation\n```\n\n## \u7528\u6cd5\n\n### \u5f15\u5165:\n\n```python\nimport pqquotation\n```\n\n### \u9009\u62e9\u884c\u60c5\n\n```python\nquotation = pqquotation.use('sina') # \u65b0\u6d6a ['sina'], \u817e\u8baf ['tencent', 'qq'], \u4e1c\u65b9\u8d22\u5bcc ['dc', 'eastmoney']\n```\n\n### \u83b7\u53d6\u6240\u6709\u80a1\u7968\u884c\u60c5\n\n```python\n# prefix \u6307\u5b9a\u8fd4\u56de\u884c\u60c5\u7684\u80a1\u7968\u4ee3\u7801\u662f\u5426\u5e26 sz/sh/bj \u5e02\u573a\u524d\u7f00\nquotation.market_snapshot(prefix=True) \n```\n\n**return**\n\n```python\n {'sh000159': {'name': '\u56fd\u9645\u5b9e\u4e1a', # \u80a1\u7968\u540d\n 'buy': 8.87, # \u7ade\u4e70\u4ef7\n 'sell': 8.88, # \u7ade\u5356\u4ef7\n 'now': 8.88, # \u73b0\u4ef7\n 'open': 8.99, # \u5f00\u76d8\u4ef7\n 'close': 8.96, # \u6628\u65e5\u6536\u76d8\u4ef7\n 'high': 9.15, # \u4eca\u65e5\u6700\u9ad8\u4ef7\n 'low': 8.83, # \u4eca\u65e5\u6700\u4f4e\u4ef7\n 'turnover': 22545048, # \u4ea4\u6613\u80a1\u6570\n 'volume': 202704887.74\uff0c # \u4ea4\u6613\u91d1\u989d\n 'ask1': 8.88, # \u5356\u4e00\u4ef7\n 'ask1_volume': 111900, # \u5356\u4e00\u91cf\n 'ask2': 8.89,\n 'ask2_volume': 54700,\n 'bid1': 8.87, # \u4e70\u4e00\u4ef7\n 'bid1_volume': 21800, # \u4e70\u4e00\u91cf\n ...\n 'bid2': 8.86, \n 'bid2_volume': 78400,\n 'date': '2016-02-19',\n 'time': '14:30:00',\n ...},\n ......\n}\n```\n\n#### \u5355\u53ea\u80a1\u7968\n\n```python\nquotation.real('162411') # \u652f\u6301\u76f4\u63a5\u6307\u5b9a\u524d\u7f00\uff0c\u5982 'sh000001'\n```\n\n#### \u591a\u53ea\u80a1\u7968\n\n```python\nquotation.real(['000001', '162411']) \n```\n\n#### \u591a\u4e2a\u670d\u52a1\u5668\u8f6e\u8be2\u8c03\u7528\n\n1. \u667a\u80fd\u8f6e\u8be2\u673a\u5236: sina \u2192 tencent \u2192 dc \u5faa\u73af\u8f6e\u8be2\n2. \u6545\u969c\u81ea\u52a8\u5207\u6362: \u67d0\u4e2a\u6570\u636e\u6e90\u5931\u8d25\u65f6\u81ea\u52a8\u5207\u6362\u5230\u4e0b\u4e00\u4e2a\n3. \u6570\u636e\u683c\u5f0f\u7edf\u4e00: \u5c06tencent\u548cdc\u7684\u6570\u636e\u683c\u5f0f\u6807\u51c6\u5316\u4e3asina\u683c\u5f0f\n4. \u5f02\u5e38\u5904\u7406: \u5b8c\u6574\u7684\u91cd\u8bd5\u673a\u5236\u548c\u9519\u8bef\u5904\u7406\n5. \u6027\u80fd\u76d1\u63a7: \u7edf\u8ba1\u5404\u6570\u636e\u6e90\u7684\u6210\u529f\u7387\u548c\u54cd\u5e94\u65f6\u95f4\n6. \u591a\u79cd\u522b\u540d\u652f\u6301: 'rr'\u3001'roundrobin'\u3001'round-robin'\n\n```Python\nimport pqquotation\n\n# \u521b\u5efaRound-robin\u5b9e\u4f8b\nrr = pqquotation.use('roundrobin') # \u6216 'rr', 'round-robin'\n\n# \u83b7\u53d6\u5b9e\u65f6\u884c\u60c5\ndata = rr.real(['000001', '000002', '600000'])\n\n# \u67e5\u770b\u6570\u636e\u6e90\u7edf\u8ba1\nstats = rr.get_source_stats()\n\n# \u91cd\u7f6e\u5931\u8d25\u72b6\u6001\nrr.reset_failed_sources()\n```\n\n\n\n#### \u540c\u65f6\u83b7\u53d6\u6307\u6570\u548c\u884c\u60c5\n\n```python\n# \u83b7\u53d6\u76f8\u540c\u4ee3\u7801\u7684\u6307\u6570\u548c\u80a1\u7968\u65f6 prefix \u5fc5\u987b\u4e3a True\nquotation.real(['sh000001', 'sz000001'], prefix=True)\n```\n\n### \u66f4\u65b0\u5185\u7f6e\u5168\u5e02\u573a\u80a1\u7968\u4ee3\u7801\n\n```python\neasyquotation.update_stock_codes()\n```\n\n\n### \u6e2f\u80a1\u65e5k\u7ebf\u56fe\n*[\u817e\u8baf\u65e5k\u7ebf\u56fe](http://web.ifzq.gtimg.cn/appstock/app/hkfqkline/get?_var=kline_dayqfq¶m=hk00700,day,,,350,qfq&r=0.7773272375526847)*\n\n```python\n\nimport easyquotation\nquotation = easyquotation.use(\"daykline\")\ndata = quotation.real(['00001','00700'])\nprint(data)\n```\n\n```python\n{\n '00001': [\n ['2017-10-09', '352.00', '349.00', '353.00', '348.60', '13455864.00'], # [\u65e5\u671f, \u4eca\u5f00, \u4eca\u6536, \u6700\u9ad8, \u6700\u4f4e, \u6210\u4ea4\u91cf ]\n ['2017-10-10', '350.80', '351.20', '352.60', '349.80', '10088970.00'],\n ]\n '00700':[\n \n ] \n }\n}\n```\n\n### \u817e\u8baf\u6e2f\u80a1\u5b9e\u65f6\u884c\u60c5 \n*[\u817e\u8baf\u63a7\u80a1\u5b9e\u65f6\u884c\u60c5](http://sqt.gtimg.cn/utf8/q=r_hk00700)*\n```python\n\nimport easyquotation\nquotation = easyquotation.use(\"hkquote\")\ndata = quotation.real(['00001','00700'])\nprint(data)\n```\n\n```python\n{\n '00001': \n {\n 'stock_code': '00001', # \u80a1\u7968\u4ee3\u7801\n 'lotSize': '\"100', # \u6bcf\u624b\u6570\u91cf\n 'name': '\u957f\u548c', # \u80a1\u7968\u540d\u79f0\n 'price': '97.20', # \u80a1\u7968\u5f53\u524d\u4ef7\u683c\n 'lastPrice': '97.75', # \u80a1\u7968\u6628\u5929\u6536\u76d8\u4ef7\u683c\n 'openPrice': '97.75', # \u80a1\u7968\u4eca\u5929\u5f00\u76d8\u4ef7\u683c\n 'amount': '1641463.0', # \u80a1\u7968\u6210\u4ea4\u91cf \n 'time': '2017/11/29 15:38:58', # \u5f53\u524d\u65f6\u95f4\n 'high': '98.05', # \u5f53\u5929\u6700\u9ad8\u4ef7\u683c\n 'low': '97.15' # \u5f53\u5929\u6700\u4f4e\u4ef7\u683c\n }, \n '00700': \n {\n 'stock_code': '00700', \n 'lotSize': '\"100',\n 'name': '\u817e\u8baf\u63a7\u80a1', \n 'price': '413.20', \n 'lastPrice': '419.20', \n 'openPrice': '422.20', \n 'amount': '21351010.0', \n 'time': '2017/11/29 15:39:01', \n 'high': '422.80',\n 'low': '412.40'\n }\n}\n```\n\n### \u9009\u62e9 [jsl](https://www.jisilu.cn)\uff08\u96c6\u601d\u5f55\uff09 \u884c\u60c5\n\n```python\nquotation = easyquotation.use('jsl') \n```\n\n#### \u8bbe\u7f6e cookie (\u53ef\u9009)\n\n\u4e0d\u8bbe\u7f6e\u7684\u8bdd\u83b7\u53d6\u76f8\u5173\u6570\u636e\u6709\u9650\u5236\n\n```python\nquotation.set_cookie('\u4ece\u6d4f\u89c8\u5668\u83b7\u53d6\u7684\u96c6\u601d\u5f55 Cookie')\n```\n\n\n#### \u6307\u6570ETF\u67e5\u8be2\u63a5\u53e3\n\n**TIP :** \u5c1a\u672a\u5305\u542b\u9ec4\u91d1ETF\u548c\u8d27\u5e01ETF\n\n*[\u96c6\u601d\u5f55ETF\u6e90\u7f51\u9875](https://www.jisilu.cn/data/etf/#tlink_2)*\n\n```python\nquotation.etfindex(index_id=\"\", min_volume=0, max_discount=None, min_discount=None)\n```\n\n**return**\n\n```python\n{\n \"510050\": {\n \"fund_id\": \"510050\", # \u4ee3\u7801\n \"fund_nm\": \"50ETF\", # \u540d\u79f0\n \"price\": \"2.066\", # \u73b0\u4ef7\n \"increase_rt\": \"0.34%\", # \u6da8\u5e45\n \"volume\": \"71290.96\", # \u6210\u4ea4\u989d(\u4e07\u5143)\n \"index_nm\": \"\u4e0a\u8bc150\", # \u6307\u6570\n \"pe\": \"9.038\", # \u6307\u6570PE\n \"pb\": \"1.151\", # \u6307\u6570PB\n \"index_increase_rt\": \"0.45%\", # \u6307\u6570\u6da8\u5e45\n \"estimate_value\": \"2.0733\", # \u4f30\u503c\n \"fund_nav\": \"2.0730\", # \u51c0\u503c\n \"nav_dt\": \"2016-03-11\", # \u51c0\u503c\u65e5\u671f\n \"discount_rt\": \"-0.34%\", # \u6ea2\u4ef7\u7387\n \"creation_unit\": \"90\", # \u6700\u5c0f\u7533\u8d4e\u5355\u4f4d(\u4e07\u4efd)\n \"amount\": \"1315800\", # \u4efd\u989d\n \"unit_total\": \"271.84\", # \u89c4\u6a21(\u4ebf\u5143)\n \"index_id\": \"000016\", # \u6307\u6570\u4ee3\u7801\n \"last_time\": \"15:00:00\", # \u4ef7\u683c\u6700\u540e\u65f6\u95f4(\u672a\u786e\u5b9a)\n \"last_est_time\": \"23:50:02\", # \u4f30\u503c\u6700\u540e\u65f6\u95f4(\u672a\u786e\u5b9a)\n }\n}\n```\n\n## TODO\n* [x] \u68c0\u67e5\u6570\u636e\u6e90 sina\uff0cqq\uff0cdc\uff0c\u8bbf\u95ee\u6570\u636e\u662f\u5426\u5b8c\u6bd5\uff0c\u6570\u636e\u662f\u5426\u4e00\u81f4\u3002sina\u548cdc\u7684\u6570\u636e\u6bd4\u8f83\u4e00\u81f4\uff0cqq\u7684volume\u5b57\u6bb5\u6709\u4e9b\u95ee\u9898\n* [x] \u589e\u52a0\u81ea\u52a8\u5207\u6362\u670d\u52a1\u5668\u7684\u529f\u80fd\uff0c\u907f\u514d\u957f\u65f6\u95f4\u8fde\u63a5\u4e00\u4e2a\u670d\u52a1\u5668\u5bfc\u81f4\u5c4f\u853d\u8fde\u63a5\n* [x] \u652f\u6301\u591a\u79cd\u80a1\u7968\u4ee3\u7801\u683c\u5f0f\uff0c\u652f\u6301\u7ed3\u679c\u4e2d\u80a1\u7968\u4ee3\u7801\u683c\u5f0f\u8bbe\u7f6e\n\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "A utility for Fetch China Stock Info",
"version": "0.8.3",
"project_urls": {
"Homepage": "https://github.com/bushuhui/pqquotation"
},
"split_keywords": [
"china",
"stock",
"trade"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e180be62e07ba763a77ab78e98af8f927b494af9819f4bbfdac832d77140602b",
"md5": "dc592202a5c5db818241769b2c60997b",
"sha256": "ecc8e5fd07b1a1837aeb997b497011e9c93626cf0e5d984b7116447b1a2f7fbd"
},
"downloads": -1,
"filename": "pqquotation-0.8.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dc592202a5c5db818241769b2c60997b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 51211,
"upload_time": "2025-08-27T03:02:36",
"upload_time_iso_8601": "2025-08-27T03:02:36.953527Z",
"url": "https://files.pythonhosted.org/packages/e1/80/be62e07ba763a77ab78e98af8f927b494af9819f4bbfdac832d77140602b/pqquotation-0.8.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0a6e04543e239ea0a38bbe0b7da74817ed1cb592dab98d5d8532b7b4da0edd9f",
"md5": "9419c5eeda2f82b0ba9d8d8a632c43b2",
"sha256": "5dae1b04b8eaf815bcf340f5570bf6627ec7a9e8bda477c46f1d790dae4f1a7d"
},
"downloads": -1,
"filename": "pqquotation-0.8.3.tar.gz",
"has_sig": false,
"md5_digest": "9419c5eeda2f82b0ba9d8d8a632c43b2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 74910,
"upload_time": "2025-08-27T03:02:39",
"upload_time_iso_8601": "2025-08-27T03:02:39.069725Z",
"url": "https://files.pythonhosted.org/packages/0a/6e/04543e239ea0a38bbe0b7da74817ed1cb592dab98d5d8532b7b4da0edd9f/pqquotation-0.8.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-27 03:02:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bushuhui",
"github_project": "pqquotation",
"travis_ci": true,
"coveralls": true,
"github_actions": false,
"requirements": [
{
"name": "requests",
"specs": []
}
],
"lcname": "pqquotation"
}