gjdatac-api 0.1.6__tar.gz → 0.1.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gjdatac-api might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gjdatac_api
3
- Version: 0.1.6
3
+ Version: 0.1.7
4
4
  Summary: 数据接口打包
5
5
  Author: yin
6
6
  Author-email: 2018209921@qq.com
@@ -10,12 +10,15 @@ import chinese_calendar as calendar
10
10
  import pandas as pd
11
11
  import dolphindb as ddb
12
12
 
13
- from .dict_data import (get_price_frequency_dict, get_price_data_type_dict, get_instruments_type_dict,
13
+ from utils.dict_data import (get_price_frequency_dict, get_price_data_type_dict, get_instruments_type_dict,
14
14
  future_delivery_fee_return_fields, future_delivery_fee_return_fields_rename,
15
15
  future_margin_ratio_return_fields, future_margin_ratio_return_fields_rename,
16
- future_limit_position_return_fields, future_limit_position_return_fields_rename)
17
- from .dolphindb_info import *
18
- from .instrument_class import Instrument
16
+ future_limit_position_return_fields, future_limit_position_return_fields_rename,
17
+ main_contract_return_fields, main_contract_return_fields_rename,
18
+ tick_main_contract_return_fields, tick_main_contract_return_fields_rename
19
+ )
20
+ from utils.dolphindb_info import *
21
+ from utils.instrument_class import Instrument
19
22
 
20
23
 
21
24
  class GJDataC:
@@ -38,6 +41,10 @@ class GJDataC:
38
41
  self.user_id = user_id
39
42
  self.password = password
40
43
 
44
+ # 创建向量,包含所有可用节点的地址和端口
45
+ self.sites = dolphindb_service
46
+
47
+
41
48
  def connect_db(self, table_name, db_path):
42
49
  """
43
50
  此方法用于根据不同的数据表及数据库获取数据,只返回Table对象,对应的数据处理在对应的数据接口处理
@@ -48,7 +55,12 @@ class GJDataC:
48
55
 
49
56
  # 连接数据库
50
57
  db_session = ddb.session()
51
- success = db_session.connect(self.host, self.port, self.user_id, self.password)
58
+ # 原始方式
59
+ # success = db_session.connect(self.host, self.port, self.user_id, self.password)
60
+
61
+ # 创建连接;开启高可用,并指定sites为所有可用节点的ip:port
62
+ success = db_session.connect(self.host, self.port, self.user_id, self.password, highAvailability=True,
63
+ highAvailabilitySites=self.sites)
52
64
  if not success:
53
65
  raise Exception("please check your database connection information")
54
66
 
@@ -1641,47 +1653,69 @@ class GJDataC:
1641
1653
 
1642
1654
  """ get_active_contract 主力/次主力合约 """
1643
1655
 
1644
- def get_active_contract(self, code=None, start_date=datetime.date.today(),
1645
- end_date=datetime.date.today(), asset_type=None,
1646
- fields=None, source=None):
1656
+ def get_active_contract(self, commodity=None, start_date=datetime.date.today(),
1657
+ end_date=datetime.date.today(), frequency=None, compute_type=None,
1658
+ fields=None, adjust_type=None, adjust_method=None, source=None):
1647
1659
  """
1648
1660
  获取主力/次主力合约信息接口
1649
- :param code: str or str list--必填,品种
1661
+ :param commodity: str or str list--必填,品种
1650
1662
  :param start_date: date--必填,默认当天
1651
1663
  :param end_date: date--必填,默认当天
1652
- :param asset_type: str--必填,active指主力;next_active次主力
1664
+ :param frequency: str--必填
1665
+ :param compute_type: str--必填,active指主力;next_active次主力
1653
1666
  :param fields: str or str list--选填,返回字段,默认全部
1667
+ :param adjust_type: str--选填,复权方式:不复权 - none,后复权 - post
1668
+ :param adjust_method: str--选填,复权方法
1654
1669
  :param source: str--选填,数据源,默认研究所, 3个来源可选:1-数据中台, 2-米筐, 3-研究所(表中无研究所的source)
1655
1670
 
1656
1671
  :return: 主力/次主力合约
1657
1672
  """
1658
1673
 
1659
1674
  """ 校验参数 """
1660
- self.get_active_contract_validate_params(code, start_date, end_date, asset_type)
1675
+ self.get_active_contract_validate_params(commodity, start_date, end_date, frequency, compute_type, adjust_type,
1676
+ adjust_method)
1661
1677
 
1662
1678
  """ 获取、筛选数据 """
1663
- data, db_session = self.get_active_contract_get_data(code, start_date, end_date, asset_type, source)
1679
+ if frequency in ['1min', '1d', '1min_gtja']:
1680
+ data, db_session = self.get_active_contract_get_data(commodity, start_date, end_date, frequency,
1681
+ compute_type,
1682
+ source)
1683
+ else:
1684
+ data, db_session = self.get_active_contract_get_data_tick(commodity, start_date, end_date, frequency,
1685
+ compute_type,
1686
+ source)
1687
+ data = self.get_active_contract_tick_data(data, frequency, start_date, end_date)
1664
1688
  db_session.close()
1665
1689
 
1666
- """ 处理返回结果 """
1667
- data = self.get_active_contract_process_result(data, fields)
1690
+ """ 处理字段名 """
1691
+ data = self.get_active_contract_rename(data, adjust_method, frequency)
1692
+
1693
+ """ 根据是否复权计算价格数据 """
1694
+ data = self.get_active_contract_adjust_price(data, adjust_type, adjust_method, frequency)
1695
+
1696
+ """ 处理返回字段 """
1697
+ data = self.get_active_contract_process_return_fields(data, fields)
1668
1698
 
1669
1699
  return data
1670
1700
 
1671
- def get_active_contract_validate_params(self, code, start_date, end_date, asset_type):
1701
+ def get_active_contract_validate_params(self, code, start_date, end_date, frequency, asset_type, adjust_type,
1702
+ adjust_method):
1672
1703
  """
1673
1704
  校验参数
1674
1705
  Args:
1675
1706
  code: str or str list--选填,合约代码,默认全部
1676
1707
  start_date: str--选填,开始日期,默认全部
1677
1708
  end_date: str--选填,结束日期,默认全部
1709
+ frequency: str--必填
1678
1710
  asset_type: str--选填,合约类型,默认全部
1711
+ adjust_type: str--选填,复权类型
1712
+ adjust_method: str--选填,复权方法
1679
1713
  Raises:
1680
1714
  ValueError: 参数错误
1681
1715
  """
1682
1716
 
1683
1717
  # 校验必填参数
1684
- self.get_active_contract_validate_required_params(code, start_date, end_date, asset_type)
1718
+ self.get_active_contract_validate_required_params(code, start_date, end_date, frequency, asset_type)
1685
1719
 
1686
1720
  # 校验日期参数类型
1687
1721
  self.get_active_contract_validate_date_type(start_date, end_date)
@@ -1689,12 +1723,17 @@ class GJDataC:
1689
1723
  # 校验code类型
1690
1724
  self.get_active_contract_validate_code(code)
1691
1725
 
1692
- def get_active_contract_validate_required_params(self, code, start_date, end_date, asset_type):
1726
+ # 校验 adjust_type, adjust_method
1727
+ self.general_validate_param_is_str("adjust_type", adjust_type)
1728
+ self.general_validate_param_is_str("adjust_method", adjust_method)
1729
+
1730
+ def get_active_contract_validate_required_params(self, code, start_date, end_date, frequency, asset_type):
1693
1731
  """
1694
1732
  校验参数是否必填
1695
1733
  :param code: str or str list--必填,品种
1696
1734
  :param start_date: date--必填,默认当天
1697
1735
  :param end_date: date--必填,默认当天
1736
+ :param frequency: str--必填
1698
1737
  :param asset_type: str--必填,active指主力;next_active次主力
1699
1738
  :return: None
1700
1739
  """
@@ -1703,7 +1742,8 @@ class GJDataC:
1703
1742
  "code": code,
1704
1743
  "start_date": start_date,
1705
1744
  "end_date": end_date,
1706
- "asset_type": asset_type
1745
+ "asset_type": asset_type,
1746
+ "frequency": frequency
1707
1747
  }
1708
1748
  for key, value in params_dict.items():
1709
1749
  self.general_validate_params_required(value, key) # 校验必填参数
@@ -1716,20 +1756,86 @@ class GJDataC:
1716
1756
  """
1717
1757
  self.general_validate_field_str_or_list(code, "code")
1718
1758
 
1719
- def get_active_contract_get_data(self, code, start_date, end_date, asset_type, source):
1759
+ @staticmethod
1760
+ def get_active_contract_get_table(frequency):
1761
+ """
1762
+ 获取表信息
1763
+ :param frequency: 频率
1764
+ :return: 表信息
1765
+ """
1766
+
1767
+ return {
1768
+ '1d': (qc_future_maincontract_dayk, dayk_future_maincontract_db),
1769
+ '1min': (qc_future_maincontract_minutek, minutek_future_maincontract_db),
1770
+ '1min_gtja': (qc_future_maincontract_minutek, minutek_future_maincontract_db)
1771
+ }.get(frequency, (None, None))
1772
+
1773
+ @staticmethod
1774
+ def get_active_contract_get_table_tick(frequency):
1775
+ """
1776
+ 获取表信息
1777
+ :param frequency: 频率
1778
+ :return: 表信息
1779
+ """
1780
+
1781
+ return {
1782
+ 'tick_l1': (tick_main_contract_db_table_name, tick_main_contract_db_path),
1783
+ 'tick_l2': (tick_main_contract_db_table_name, tick_main_contract_db_path),
1784
+ }.get(frequency, (None, None))
1785
+
1786
+ def get_active_contract_get_data(self, code, start_date, end_date, frequency, compute_type, source):
1720
1787
  """
1721
1788
  获取数据
1722
1789
  :param code: str or str list--必填,品种
1723
1790
  :param start_date: str--必填,开始日期
1724
1791
  :param end_date: str--必填,结束日期
1725
- :param asset_type: str--必填,资产类型
1792
+ :param compute_type: str--必填,资产类型
1793
+ :param frequency: str--必填
1726
1794
  :param source: str--选填,数据来源
1727
1795
 
1728
1796
  :return: 主力/次主力合约数据
1729
1797
  """
1730
1798
 
1799
+ # 根据频率获取对应的表
1800
+ table_name, db_path = self.get_active_contract_get_table(frequency)
1801
+
1731
1802
  # 先从数据库获取数据
1803
+ data, db_session = self.connect_db(table_name, db_path)
1804
+
1805
+ # 根据code筛选数据
1806
+ code_data = data.where(f"product_id in {code}") if isinstance(code, list) else \
1807
+ data.where(f"product_id = '{code}'")
1808
+
1809
+ # 根据日期筛选数据
1810
+ # 将日期转换成 DolphinDB 识别的日期格式,用于筛选数据
1811
+ start_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(start_date)
1812
+ end_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(end_date)
1813
+ date_data = code_data.where(f"trading_day >= {start_dolphin_date} and trading_day <= {end_dolphin_date}")
1814
+
1815
+ if compute_type:
1816
+ # 根据表中的 rank 字段筛选主力/次主力合约,rank == 1是主力合约, 2 是次主力合约
1817
+ rank = 'MAIN' if compute_type == "main" else 'SUB_MAIN'
1818
+ rank_data = date_data.where(f"compute_type = '{rank}'")
1819
+
1820
+ return rank_data.toDF(), db_session
1821
+ return date_data.toDF(), db_session
1822
+
1823
+ def get_active_contract_get_data_tick(self, code, start_date, end_date, frequency, compute_type, source):
1824
+ """
1825
+ 获取tick数据
1826
+ :param code: str or str list--必填,品种
1827
+ :param start_date: str--必填,开始日期
1828
+ :param end_date: str--必填,结束日期
1829
+ :param compute_type: str--必填,资产类型
1830
+ :param frequency: str--必填
1831
+ :param source: str--选填,数据来源
1832
+
1833
+ :return: 主力/次主力合约数据
1834
+ """
1835
+
1732
1836
  table_name, db_path = main_contract_db_table_name, main_contract_db_path
1837
+
1838
+ # 先从数据库获取数据
1733
1839
  data, db_session = self.connect_db(table_name, db_path)
1734
1840
 
1735
1841
  # 根据code筛选数据
@@ -1742,24 +1848,43 @@ class GJDataC:
1742
1848
  end_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(end_date)
1743
1849
  date_data = code_data.where(f"trading_day >= {start_dolphin_date} and trading_day <= {end_dolphin_date}")
1744
1850
 
1745
- # 根据 asset_type 筛选数据 (现无次主力合约信息,不清楚数据结构和字段信息,后续需要根据实际数据进行调整)
1746
1851
  # 根据表中的 rank 字段筛选主力/次主力合约,rank == 1是主力合约, 2 是次主力合约
1747
- rank = 1 if asset_type == "active" else 2
1748
- rank_data = date_data.where(f"rank = {rank}")
1749
-
1750
- # 根据 source 筛选数据,如果有,就筛选,反之直接返回 date_data
1751
- if source:
1752
- source_dict = {
1753
- "1": "dc",
1754
- "2": "mick",
1755
- # "3": "研究所" # 表中没有研究所的数据来源
1756
- }
1852
+ if compute_type:
1853
+ rank = 'MAIN' if compute_type == "main" else 'SUB_MAIN'
1854
+ rank_data = date_data.where(f"compute_type = '{rank}'")
1855
+ return rank_data.toDF(), db_session
1757
1856
 
1758
- source_data = rank_data.where(f"source = '{source_dict[str(source)]}'")
1857
+ return date_data.toDF(), db_session
1759
1858
 
1760
- return source_data.toDF(), db_session
1859
+ def get_active_contract_tick_data(self, data, frequency, start_date, end_date):
1860
+ """
1861
+ 根据主力合约表查询tick表
1862
+ :param data: 数据
1863
+ :param frequency: 频率
1864
+ :param start_date: 开始日期
1865
+ :param end_date: 结束日期
1866
+ :return: 查询后的数据
1867
+ """
1761
1868
 
1762
- return rank_data.toDF(), db_session
1869
+ table_name, db_path = self.get_active_contract_get_table_tick(frequency)
1870
+ # 先从数据库获取数据
1871
+ tick_data, db_session = self.connect_db(table_name, db_path)
1872
+
1873
+ # 使用 strftime 方法将 Timestamp 转换为所需格式
1874
+ formatted_dates = [ts.strftime('%Y.%m.%d') for ts in data['trading_day'].tolist()]
1875
+
1876
+ # 根据日期筛选数据
1877
+ # 将日期转换成 DolphinDB 识别的日期格式,用于筛选数据
1878
+ start_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(start_date)
1879
+ end_dolphin_date = self.get_active_contract_datetime_to_dolphin_time(end_date)
1880
+ date_data = tick_data.where(f"trading_day >= {start_dolphin_date} and trading_day <= {end_dolphin_date}")
1881
+
1882
+ instrument_data = date_data.where(f"instrument_id in {data['instrument_id'].tolist()}")
1883
+
1884
+ fina_data = instrument_data.toDF()
1885
+ db_session.close()
1886
+
1887
+ return fina_data
1763
1888
 
1764
1889
  @staticmethod
1765
1890
  def get_active_contract_datetime_to_dolphin_time(datetime_str):
@@ -1769,9 +1894,15 @@ class GJDataC:
1769
1894
  格式化后的日期字符串,例如 '2018.01.04 09:01:00'。
1770
1895
  """
1771
1896
  if isinstance(datetime_str, str):
1772
- date_obj = datetime.datetime.strptime(datetime_str, '%Y-%m-%d')
1773
- return date_obj.strftime('%Y.%m.%d %H:%M:%S')
1774
- return datetime_str.strftime('%Y.%m.%d %H:%M:%S')
1897
+ try:
1898
+ datetime.datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')
1899
+ date_obj = datetime.datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')
1900
+ return date_obj.strftime('%Y.%m.%d %H:%M:%S')
1901
+ except ValueError:
1902
+ date_obj = datetime.datetime.strptime(datetime_str, '%Y-%m-%d')
1903
+ return date_obj.strftime('%Y.%m.%d')
1904
+ else:
1905
+ return datetime_str.strftime('%Y.%m.%d %H:%M:%S')
1775
1906
 
1776
1907
  def get_active_contract_validate_date_type(self, start_date, end_date):
1777
1908
  """
@@ -1796,10 +1927,85 @@ class GJDataC:
1796
1927
  # else:
1797
1928
  # raise ValueError("begin_date type error, please enter datetime.datetime type")
1798
1929
 
1799
- # @staticmethod
1800
- def get_active_contract_process_result(self, data, fields):
1930
+ @staticmethod
1931
+ def get_active_contract_rename(data, ex_factor, frequency):
1801
1932
  """
1802
1933
  处理返回结果
1934
+ :param data: 数据
1935
+ :param ex_factor: 复权因子
1936
+ :param frequency: 频率
1937
+ :return: 处理后的返回结果
1938
+ """
1939
+ new_df = data.copy()
1940
+
1941
+ if frequency in ['1min', '1d', '1min_gtja']:
1942
+ return_fields = main_contract_return_fields
1943
+ return_fields_rename = main_contract_return_fields_rename
1944
+ else:
1945
+ return_fields = tick_main_contract_return_fields
1946
+ return_fields_rename = tick_main_contract_return_fields_rename
1947
+
1948
+ # 筛选出需求文档中指定的字段
1949
+ new_df = new_df[return_fields]
1950
+
1951
+ # 将实际数据字段转换成需求文档中指定的字段
1952
+ new_df.rename(columns=return_fields_rename, inplace=True)
1953
+
1954
+ if frequency in ['1min', '1d', '1min_gtja']:
1955
+ new_df['none_close'] = new_df['close']
1956
+ new_df['none_prev_close'] = new_df['prev_close']
1957
+ new_df['ex_factor'] = ex_factor
1958
+ else:
1959
+ new_df['total_turnover'] = new_df.groupby(['order_book_ids', 'trading_day'])['turnover'].transform('sum')
1960
+
1961
+ return new_df
1962
+
1963
+ @staticmethod
1964
+ def get_active_contract_adjust_price(data, adjust_type, adjust_method, frequency):
1965
+ """
1966
+ 根据参数计算是否复权
1967
+ :param data: 数据
1968
+ :param adjust_type: 复权类型
1969
+ :param adjust_method: 复权因子
1970
+ :param frequency: 频率
1971
+ :return: 计算后的数据
1972
+ """
1973
+
1974
+ if not adjust_type or frequency in ['tick_l1', 'tick_l2']:
1975
+ return data
1976
+
1977
+ adjust_fields = ['open', 'close', 'high', 'low', 'limit_up', 'limit_down', 'settlement', 'prev_settlement',
1978
+ 'prev_close']
1979
+ if adjust_type == 'post':
1980
+ if adjust_method in ['prev_close_spread', 'open_spread']:
1981
+ for field in adjust_fields:
1982
+ data[field] = data[field] + data[adjust_method]
1983
+ else:
1984
+ for field in adjust_fields:
1985
+ data[field] = data[field] * data[adjust_method]
1986
+
1987
+ return data
1988
+
1989
+ @staticmethod
1990
+ def get_active_contract_process_return_fields(data, fields):
1991
+ """
1992
+ 处理返回字段
1993
+ :param data: 主力/次主力合约数据
1994
+ :param fields: str or str list--选填,返回字段,默认全部
1995
+ :return: 筛选后的主力/次主力合约数据
1996
+ """
1997
+
1998
+ if not fields:
1999
+ return data
2000
+
2001
+ if isinstance(fields, str):
2002
+ return data[[fields]]
2003
+ else:
2004
+ return data[fields]
2005
+
2006
+ def get_active_contract_process_result(self, data, fields):
2007
+ """
2008
+ 处理返回字段
1803
2009
  :param data: 主力/次主力合约数据
1804
2010
  :param fields: str or str list--选填,返回字段,默认全部
1805
2011
  :return: 筛选后的主力/次主力合约数据
@@ -1984,21 +2190,12 @@ class GJDataC:
1984
2190
  格式化后的日期字符串,例如 '2018.01.04 09:01:00'。
1985
2191
  """
1986
2192
 
1987
- # 在此需求中,因为所需的数据源表中对于日期字段的定义不一样,所以需要根据不同情况进行处理
1988
- if asset_type == "库存":
1989
- if isinstance(date, str):
1990
- return datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S') if (
1991
- self.general_validate_date_str_is_datetime_type(date)) else (
1992
- datetime.datetime.strptime(date, '%Y-%m-%d').strftime('%Y-%m-%d'))
1993
- return date.strftime('%Y-%m-%d %H:%M:%S') if (
1994
- self.general_validate_date_str_is_datetime_type(date)) else date.strftime('%Y-%m-%d')
1995
- else:
1996
- if isinstance(date, str):
1997
- return datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S').strftime('%Y.%m.%d %H:%M:%S') if (
1998
- self.general_validate_date_str_is_datetime_type(date)) else (
1999
- datetime.datetime.strptime(date, '%Y-%m-%d').strftime('%Y.%m.%d'))
2000
- return date.strftime('%Y.%m.%d %H:%M:%S') if (
2001
- self.general_validate_date_str_is_datetime_type(date)) else date.strftime('%Y.%m.%d')
2193
+ if isinstance(date, str):
2194
+ return datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S').strftime('%Y.%m.%d %H:%M:%S') if (
2195
+ self.general_validate_date_str_is_datetime_type(date)) else (
2196
+ datetime.datetime.strptime(date, '%Y-%m-%d').strftime('%Y.%m.%d'))
2197
+ return date.strftime('%Y.%m.%d %H:%M:%S') if (
2198
+ self.general_validate_date_str_is_datetime_type(date)) else date.strftime('%Y.%m.%d')
2002
2199
 
2003
2200
  @staticmethod
2004
2201
  def _get_basic_data_get_table_info(asset_type):
@@ -2044,7 +2241,7 @@ class GJDataC:
2044
2241
  new_df.rename(columns={'product_id': 'order_book_id', ' data_date': 'date', 'inventory_value': 'value'},
2045
2242
  inplace=True)
2046
2243
 
2047
- return new_df[['order_book_id', 'asset_type', 'date', 'value']]
2244
+ return new_df[['order_book_id', 'asset_type', 'data_date', 'value']]
2048
2245
 
2049
2246
  """ get_warehouse_stocks_future 仓单数据 """
2050
2247
 
@@ -2710,7 +2907,7 @@ class GJDataC:
2710
2907
  except KeyboardInterrupt:
2711
2908
  print("Subscription stopped by user.")
2712
2909
  # 关闭连接和资源释放逻辑
2713
- s.unsubscribe(subscribe_ip, subscribe_port, "QcMinKlineTable")
2910
+ s.unsubscribe(subscribe_ip, subscribe_port, subscribe_min_db_table_name)
2714
2911
  except Exception as e:
2715
2912
  raise e
2716
2913
 
@@ -3567,4 +3764,4 @@ class GJDataC:
3567
3764
  date = datetime.datetime.strptime(date, '%Y.%m.%d')
3568
3765
 
3569
3766
  # 判断是否是周末(周六或周日)
3570
- return date.weekday() >= 5 # weekday() 返回 5(周六)或 6(周日)
3767
+ return date.weekday() >= 5 # weekday() 返回 5(周六)或 6(周日)
@@ -130,3 +130,7 @@ inventory_db_table_name = "qc_product_inventory" # 表名
130
130
 
131
131
  # 订阅实时分钟k
132
132
  subscribe_min_db_table_name = "QcMinKlineTable" # 表名
133
+
134
+
135
+ ''' 仿真 '''
136
+ dolphindb_service = ["10.74.56.101:8902", "10.74.56.102:8902", "10.74.56.103:8902"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gjdatac-api
3
- Version: 0.1.6
3
+ Version: 0.1.7
4
4
  Summary: 数据接口打包
5
5
  Author: yin
6
6
  Author-email: 2018209921@qq.com
@@ -5,7 +5,7 @@ with open('description_info.md', 'r', encoding='utf-8') as f:
5
5
 
6
6
  setup(
7
7
  name='gjdatac_api', # 你的包名
8
- version='0.1.6', # 版本号
8
+ version='0.1.7', # 版本号
9
9
  description='数据接口打包', # 包的简要描述
10
10
  long_description=long_description, # 包的详细描述
11
11
  long_description_content_type='text/markdown', # 描述文件的类型
File without changes