pqquotation


Namepqquotation JSON
Version 0.8.3 PyPI version JSON
download
home_pagehttps://github.com/bushuhui/pqquotation
SummaryA utility for Fetch China Stock Info
upload_time2025-08-27 03:02:39
maintainerNone
docs_urlNone
authorbushuhui
requires_python>=3.6
licenseBSD
keywords china stock trade
VCS
bugtrack_url
requirements requests
Travis-CI
coveralls test coverage
            # 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&param=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&param=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"
}
        
Elapsed time: 0.42181s