dtscore 2.3.0__tar.gz → 2.3.2__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.
- {dtscore-2.3.0 → dtscore-2.3.2}/LICENSE +0 -0
- {dtscore-2.3.0/src/dtscore.egg-info → dtscore-2.3.2}/PKG-INFO +109 -109
- {dtscore-2.3.0 → dtscore-2.3.2}/README.md +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/pyproject.toml +1 -1
- {dtscore-2.3.0 → dtscore-2.3.2}/setup.cfg +4 -4
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/__init__.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/consoleutils.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/csvnames.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/dataframenames.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/domain.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/events.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/fileutils.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/globals.py +4 -4
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/__init__.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/account_summary_tags.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/client.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/comm.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/commission_report.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/common.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/connection.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/const.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/contract.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/decoder.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/enum_implem.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/errors.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/execution.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/ineligibility_reason.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/message.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/news.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/object_implem.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/order.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/order_cancel.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/order_condition.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/order_state.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/orderdecoder.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/reader.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/scanner.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/server_versions.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/softdollartier.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/tag_value.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/ticktype.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/utils.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/ibapi/wrapper.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/logging.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/queuemanager.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/schema_enums.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/tiingo.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/tws.py +28 -2
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore/utils.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2/src/dtscore.egg-info}/PKG-INFO +109 -109
- {dtscore-2.3.0 → dtscore-2.3.2}/tests/test.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/tests/test2.py +1 -1
- {dtscore-2.3.0 → dtscore-2.3.2}/tests/test_ib.py +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore.egg-info/SOURCES.txt +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore.egg-info/dependency_links.txt +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore.egg-info/requires.txt +0 -0
- {dtscore-2.3.0 → dtscore-2.3.2}/src/dtscore.egg-info/top_level.txt +0 -0
|
File without changes
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name: dtscore
|
|
3
|
-
Version: 2.3.
|
|
4
|
-
Summary: DTS Core Services
|
|
5
|
-
Author-email: "D. Smith" <dgsmith.hpot@gmail.com>
|
|
6
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
7
|
-
Classifier: Environment :: Console
|
|
8
|
-
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
-
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
-
Requires-Python: >=3.10
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
License-File: LICENSE
|
|
15
|
-
Requires-Dist: importlib-metadata; python_version >= "3.10"
|
|
16
|
-
Requires-Dist: requests>=2.31
|
|
17
|
-
Requires-Dist: urllib3>=2.0
|
|
18
|
-
|
|
19
|
-
# Prep
|
|
20
|
-
|
|
21
|
-
See: https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
|
22
|
-
|
|
23
|
-
## Setup Testpypi and Pypi (one time only)
|
|
24
|
-
|
|
25
|
-
.pypirc file in $home (c:/users/dgsmith) directory<br/>
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
[testpypi]
|
|
29
|
-
username = __token__
|
|
30
|
-
password = token from test.pypi.org goes here
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Project folder structure
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
pyexample
|
|
37
|
-
├── src
|
|
38
|
-
│ ├── pyexample_USERNAME_HERE
|
|
39
|
-
│ │ ├── __init__.py
|
|
40
|
-
│ │ ├── module_mpi4py_1.py
|
|
41
|
-
│ │ ├── module_numpy_1.py
|
|
42
|
-
│ │ └── module_numpy_2.py
|
|
43
|
-
│ │-- module2_USERNAME_HERE
|
|
44
|
-
│ │ ├── __init__.py
|
|
45
|
-
│ │ ├── ...
|
|
46
|
-
├── tests
|
|
47
|
-
│ ├── test1.py
|
|
48
|
-
├── .gitignore
|
|
49
|
-
├── LICENSE
|
|
50
|
-
├── pyproject.toml
|
|
51
|
-
├── README.md
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Other Steps
|
|
55
|
-
|
|
56
|
-
* Create a virtual environment (.venv)
|
|
57
|
-
* pip install any dependencies
|
|
58
|
-
* pip freeze to create requirements.txt
|
|
59
|
-
|
|
60
|
-
## Tools install
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
python -m pip install --upgrade pip
|
|
64
|
-
python -m pip install --upgrade build
|
|
65
|
-
python -m pip install --upgrade twine
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Create pyproject.toml
|
|
69
|
-
under project folder create pyproject.toml
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
[build-system]
|
|
73
|
-
requires = ["setuptools"]
|
|
74
|
-
build-backend = "setuptools.build_meta"
|
|
75
|
-
|
|
76
|
-
[project]
|
|
77
|
-
name = "dtscore_dsmi"
|
|
78
|
-
version = "0.0.2"
|
|
79
|
-
authors = [
|
|
80
|
-
{ name="D. Smith", email="dgsmith.hpot@gmail.com" },
|
|
81
|
-
]
|
|
82
|
-
description = "DTS Core Services"
|
|
83
|
-
readme = "README.md"
|
|
84
|
-
requires-python = ">= 3.10"
|
|
85
|
-
dependencies = [
|
|
86
|
-
'requests>=2.31',
|
|
87
|
-
'importlib-metadata; python_version>="3.10"',
|
|
88
|
-
'urllib3>=2.0'
|
|
89
|
-
]
|
|
90
|
-
classifiers = [
|
|
91
|
-
'Development Status :: 5 - Production/Stable',
|
|
92
|
-
'Environment :: Console',
|
|
93
|
-
'Intended Audience :: Developers',
|
|
94
|
-
'License :: OSI Approved :: BSD License',
|
|
95
|
-
'Operating System :: Microsoft :: Windows :: Windows 11',
|
|
96
|
-
'Programming Language :: Python :: 3.10',
|
|
97
|
-
]
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Build the distribution
|
|
101
|
-
|
|
102
|
-
* delete any previous versions from the dist folder
|
|
103
|
-
* check version number in pyproject.toml
|
|
104
|
-
|
|
105
|
-
| Command | Result |
|
|
106
|
-
| --- | --- |
|
|
107
|
-
| python -m build |builds the application<br/> |
|
|
108
|
-
| twine upload --repository testpypi dist/* |upload distribution to testpypi, or<br/> |
|
|
109
|
-
| twine upload dist/* |upload distribution to pypi |
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: dtscore
|
|
3
|
+
Version: 2.3.2
|
|
4
|
+
Summary: DTS Core Services
|
|
5
|
+
Author-email: "D. Smith" <dgsmith.hpot@gmail.com>
|
|
6
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
7
|
+
Classifier: Environment :: Console
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: importlib-metadata; python_version >= "3.10"
|
|
16
|
+
Requires-Dist: requests>=2.31
|
|
17
|
+
Requires-Dist: urllib3>=2.0
|
|
18
|
+
|
|
19
|
+
# Prep
|
|
20
|
+
|
|
21
|
+
See: https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
|
22
|
+
|
|
23
|
+
## Setup Testpypi and Pypi (one time only)
|
|
24
|
+
|
|
25
|
+
.pypirc file in $home (c:/users/dgsmith) directory<br/>
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[testpypi]
|
|
29
|
+
username = __token__
|
|
30
|
+
password = token from test.pypi.org goes here
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Project folder structure
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
pyexample
|
|
37
|
+
├── src
|
|
38
|
+
│ ├── pyexample_USERNAME_HERE
|
|
39
|
+
│ │ ├── __init__.py
|
|
40
|
+
│ │ ├── module_mpi4py_1.py
|
|
41
|
+
│ │ ├── module_numpy_1.py
|
|
42
|
+
│ │ └── module_numpy_2.py
|
|
43
|
+
│ │-- module2_USERNAME_HERE
|
|
44
|
+
│ │ ├── __init__.py
|
|
45
|
+
│ │ ├── ...
|
|
46
|
+
├── tests
|
|
47
|
+
│ ├── test1.py
|
|
48
|
+
├── .gitignore
|
|
49
|
+
├── LICENSE
|
|
50
|
+
├── pyproject.toml
|
|
51
|
+
├── README.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Other Steps
|
|
55
|
+
|
|
56
|
+
* Create a virtual environment (.venv)
|
|
57
|
+
* pip install any dependencies
|
|
58
|
+
* pip freeze to create requirements.txt
|
|
59
|
+
|
|
60
|
+
## Tools install
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
python -m pip install --upgrade pip
|
|
64
|
+
python -m pip install --upgrade build
|
|
65
|
+
python -m pip install --upgrade twine
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Create pyproject.toml
|
|
69
|
+
under project folder create pyproject.toml
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
[build-system]
|
|
73
|
+
requires = ["setuptools"]
|
|
74
|
+
build-backend = "setuptools.build_meta"
|
|
75
|
+
|
|
76
|
+
[project]
|
|
77
|
+
name = "dtscore_dsmi"
|
|
78
|
+
version = "0.0.2"
|
|
79
|
+
authors = [
|
|
80
|
+
{ name="D. Smith", email="dgsmith.hpot@gmail.com" },
|
|
81
|
+
]
|
|
82
|
+
description = "DTS Core Services"
|
|
83
|
+
readme = "README.md"
|
|
84
|
+
requires-python = ">= 3.10"
|
|
85
|
+
dependencies = [
|
|
86
|
+
'requests>=2.31',
|
|
87
|
+
'importlib-metadata; python_version>="3.10"',
|
|
88
|
+
'urllib3>=2.0'
|
|
89
|
+
]
|
|
90
|
+
classifiers = [
|
|
91
|
+
'Development Status :: 5 - Production/Stable',
|
|
92
|
+
'Environment :: Console',
|
|
93
|
+
'Intended Audience :: Developers',
|
|
94
|
+
'License :: OSI Approved :: BSD License',
|
|
95
|
+
'Operating System :: Microsoft :: Windows :: Windows 11',
|
|
96
|
+
'Programming Language :: Python :: 3.10',
|
|
97
|
+
]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Build the distribution
|
|
101
|
+
|
|
102
|
+
* delete any previous versions from the dist folder
|
|
103
|
+
* check version number in pyproject.toml
|
|
104
|
+
|
|
105
|
+
| Command | Result |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| python -m build |builds the application<br/> |
|
|
108
|
+
| twine upload --repository testpypi dist/* |upload distribution to testpypi, or<br/> |
|
|
109
|
+
| twine upload dist/* |upload distribution to pypi |
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[egg_info]
|
|
2
|
-
tag_build =
|
|
3
|
-
tag_date = 0
|
|
4
|
-
|
|
1
|
+
[egg_info]
|
|
2
|
+
tag_build =
|
|
3
|
+
tag_date = 0
|
|
4
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -7,14 +7,14 @@ from datetime import date
|
|
|
7
7
|
from dtscore import schema_enums as se
|
|
8
8
|
|
|
9
9
|
# logging constants
|
|
10
|
-
logshome = r"C:\users\
|
|
10
|
+
logshome = r"C:\users\dgsmi_\dev\logs"
|
|
11
11
|
loglevel = logging.DEBUG
|
|
12
12
|
portfoliogenlogfilename = "portfolio_gen_.log"
|
|
13
13
|
logfilepath = os.path.join(logshome, portfoliogenlogfilename)
|
|
14
14
|
logformat = '%(asctime)s: %(levelname)-5s: %(module)-15s - %(message)s'
|
|
15
15
|
|
|
16
16
|
# general paths and folders not related to a single analysis environment
|
|
17
|
-
apphome = r'c:\users\
|
|
17
|
+
apphome = r'c:\users\dgsmi_\documents\personal\005_financial\trading\dts'
|
|
18
18
|
analyzerexepath = r"analyzer\dtsanalyzer.exe"
|
|
19
19
|
coredatafolder = r"coredata"
|
|
20
20
|
analysesfolder = r"analyses"
|
|
@@ -75,10 +75,10 @@ topxcount = 20
|
|
|
75
75
|
# script/config output ***************************************************************************
|
|
76
76
|
as_db_environment = se.DbEnvironment.Prod
|
|
77
77
|
as_dataset_type = se.DatasetType.FullDay
|
|
78
|
-
as_reports_folder = r"C:\users\
|
|
78
|
+
as_reports_folder = r"C:\users\dgsmi_\Documents\personal\financial\trading\dts\results"
|
|
79
79
|
as_report_name_template = "portfolio_summary.csv"
|
|
80
80
|
as_logging_level = se.LogLevel.Info
|
|
81
|
-
as_log_folder = r"C:/Users/
|
|
81
|
+
as_log_folder = r"C:/Users/dgsmi_/dev/logs/portfolio_summary_.log"
|
|
82
82
|
as_runtype = se.RunType.MultiPortfolioAnalysis
|
|
83
83
|
|
|
84
84
|
# Portfolio section default parameter values
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -44,15 +44,24 @@ class OrderAction:
|
|
|
44
44
|
@dataclass
|
|
45
45
|
class CoreOrder:
|
|
46
46
|
symbol:str
|
|
47
|
-
action:
|
|
47
|
+
action:str
|
|
48
48
|
qty:int
|
|
49
|
-
ordertype:
|
|
49
|
+
ordertype:str
|
|
50
50
|
limitprice:Optional[float] = None
|
|
51
51
|
stopprice:Optional[float] = None
|
|
52
52
|
orderid:Optional[ibclnt.OrderId] = None
|
|
53
53
|
ocagroup:Optional[str] = None
|
|
54
54
|
ocatype:Optional[int] = None
|
|
55
55
|
|
|
56
|
+
def __str__(self):
|
|
57
|
+
ordertext = f'{self.action} {self.qty} {self.symbol} @ '
|
|
58
|
+
match self.ordertype:
|
|
59
|
+
case OrderType.Market: suffix = OrderType.Market
|
|
60
|
+
case OrderType.Limit: suffix = f'{self.limitprice} {OrderType.Limit}'
|
|
61
|
+
case OrderType.Stop: suffix = f'{self.stopprice} {OrderType.Stop}'
|
|
62
|
+
ordertext += suffix
|
|
63
|
+
return ordertext
|
|
64
|
+
|
|
56
65
|
# -------------------------------------------------------------------------------------------------
|
|
57
66
|
@dataclass
|
|
58
67
|
class OrderState:
|
|
@@ -261,6 +270,23 @@ def make_oca(orders:Iterable[CoreOrder]) -> list[CoreOrder]:
|
|
|
261
270
|
grouped_orders = [make_group(o) for o in orders]
|
|
262
271
|
return grouped_orders
|
|
263
272
|
|
|
273
|
+
# --------------------------------------------------------------------------------
|
|
274
|
+
def to_orderaction(action:str) -> str:
|
|
275
|
+
match str.upper(action):
|
|
276
|
+
case 'B': return OrderAction.Buy
|
|
277
|
+
case 'BUY': return OrderAction.Buy
|
|
278
|
+
case 'S': return OrderAction.Sell
|
|
279
|
+
case 'SELL': return OrderAction.Sell
|
|
280
|
+
case _: raise Exception(f"Unknown order action string: {action}")
|
|
281
|
+
|
|
282
|
+
# --------------------------------------------------------------------------------
|
|
283
|
+
def to_ordertype(ordertype:str) -> str:
|
|
284
|
+
match str.upper(ordertype):
|
|
285
|
+
case 'LMT': return OrderType.Limit
|
|
286
|
+
case 'STP': return OrderType.Stop
|
|
287
|
+
case 'MKT': return OrderType.Market
|
|
288
|
+
case _: raise Exception(f"Unknown order type string: {ordertype}")
|
|
289
|
+
|
|
264
290
|
|
|
265
291
|
#######################################################################################
|
|
266
292
|
# private api
|
|
File without changes
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
2
|
-
Name: dtscore
|
|
3
|
-
Version: 2.3.
|
|
4
|
-
Summary: DTS Core Services
|
|
5
|
-
Author-email: "D. Smith" <dgsmith.hpot@gmail.com>
|
|
6
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
7
|
-
Classifier: Environment :: Console
|
|
8
|
-
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
-
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
-
Requires-Python: >=3.10
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
License-File: LICENSE
|
|
15
|
-
Requires-Dist: importlib-metadata; python_version >= "3.10"
|
|
16
|
-
Requires-Dist: requests>=2.31
|
|
17
|
-
Requires-Dist: urllib3>=2.0
|
|
18
|
-
|
|
19
|
-
# Prep
|
|
20
|
-
|
|
21
|
-
See: https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
|
22
|
-
|
|
23
|
-
## Setup Testpypi and Pypi (one time only)
|
|
24
|
-
|
|
25
|
-
.pypirc file in $home (c:/users/dgsmith) directory<br/>
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
[testpypi]
|
|
29
|
-
username = __token__
|
|
30
|
-
password = token from test.pypi.org goes here
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Project folder structure
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
pyexample
|
|
37
|
-
├── src
|
|
38
|
-
│ ├── pyexample_USERNAME_HERE
|
|
39
|
-
│ │ ├── __init__.py
|
|
40
|
-
│ │ ├── module_mpi4py_1.py
|
|
41
|
-
│ │ ├── module_numpy_1.py
|
|
42
|
-
│ │ └── module_numpy_2.py
|
|
43
|
-
│ │-- module2_USERNAME_HERE
|
|
44
|
-
│ │ ├── __init__.py
|
|
45
|
-
│ │ ├── ...
|
|
46
|
-
├── tests
|
|
47
|
-
│ ├── test1.py
|
|
48
|
-
├── .gitignore
|
|
49
|
-
├── LICENSE
|
|
50
|
-
├── pyproject.toml
|
|
51
|
-
├── README.md
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Other Steps
|
|
55
|
-
|
|
56
|
-
* Create a virtual environment (.venv)
|
|
57
|
-
* pip install any dependencies
|
|
58
|
-
* pip freeze to create requirements.txt
|
|
59
|
-
|
|
60
|
-
## Tools install
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
python -m pip install --upgrade pip
|
|
64
|
-
python -m pip install --upgrade build
|
|
65
|
-
python -m pip install --upgrade twine
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Create pyproject.toml
|
|
69
|
-
under project folder create pyproject.toml
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
[build-system]
|
|
73
|
-
requires = ["setuptools"]
|
|
74
|
-
build-backend = "setuptools.build_meta"
|
|
75
|
-
|
|
76
|
-
[project]
|
|
77
|
-
name = "dtscore_dsmi"
|
|
78
|
-
version = "0.0.2"
|
|
79
|
-
authors = [
|
|
80
|
-
{ name="D. Smith", email="dgsmith.hpot@gmail.com" },
|
|
81
|
-
]
|
|
82
|
-
description = "DTS Core Services"
|
|
83
|
-
readme = "README.md"
|
|
84
|
-
requires-python = ">= 3.10"
|
|
85
|
-
dependencies = [
|
|
86
|
-
'requests>=2.31',
|
|
87
|
-
'importlib-metadata; python_version>="3.10"',
|
|
88
|
-
'urllib3>=2.0'
|
|
89
|
-
]
|
|
90
|
-
classifiers = [
|
|
91
|
-
'Development Status :: 5 - Production/Stable',
|
|
92
|
-
'Environment :: Console',
|
|
93
|
-
'Intended Audience :: Developers',
|
|
94
|
-
'License :: OSI Approved :: BSD License',
|
|
95
|
-
'Operating System :: Microsoft :: Windows :: Windows 11',
|
|
96
|
-
'Programming Language :: Python :: 3.10',
|
|
97
|
-
]
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Build the distribution
|
|
101
|
-
|
|
102
|
-
* delete any previous versions from the dist folder
|
|
103
|
-
* check version number in pyproject.toml
|
|
104
|
-
|
|
105
|
-
| Command | Result |
|
|
106
|
-
| --- | --- |
|
|
107
|
-
| python -m build |builds the application<br/> |
|
|
108
|
-
| twine upload --repository testpypi dist/* |upload distribution to testpypi, or<br/> |
|
|
109
|
-
| twine upload dist/* |upload distribution to pypi |
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: dtscore
|
|
3
|
+
Version: 2.3.2
|
|
4
|
+
Summary: DTS Core Services
|
|
5
|
+
Author-email: "D. Smith" <dgsmith.hpot@gmail.com>
|
|
6
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
7
|
+
Classifier: Environment :: Console
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: importlib-metadata; python_version >= "3.10"
|
|
16
|
+
Requires-Dist: requests>=2.31
|
|
17
|
+
Requires-Dist: urllib3>=2.0
|
|
18
|
+
|
|
19
|
+
# Prep
|
|
20
|
+
|
|
21
|
+
See: https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
|
22
|
+
|
|
23
|
+
## Setup Testpypi and Pypi (one time only)
|
|
24
|
+
|
|
25
|
+
.pypirc file in $home (c:/users/dgsmith) directory<br/>
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[testpypi]
|
|
29
|
+
username = __token__
|
|
30
|
+
password = token from test.pypi.org goes here
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Project folder structure
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
pyexample
|
|
37
|
+
├── src
|
|
38
|
+
│ ├── pyexample_USERNAME_HERE
|
|
39
|
+
│ │ ├── __init__.py
|
|
40
|
+
│ │ ├── module_mpi4py_1.py
|
|
41
|
+
│ │ ├── module_numpy_1.py
|
|
42
|
+
│ │ └── module_numpy_2.py
|
|
43
|
+
│ │-- module2_USERNAME_HERE
|
|
44
|
+
│ │ ├── __init__.py
|
|
45
|
+
│ │ ├── ...
|
|
46
|
+
├── tests
|
|
47
|
+
│ ├── test1.py
|
|
48
|
+
├── .gitignore
|
|
49
|
+
├── LICENSE
|
|
50
|
+
├── pyproject.toml
|
|
51
|
+
├── README.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Other Steps
|
|
55
|
+
|
|
56
|
+
* Create a virtual environment (.venv)
|
|
57
|
+
* pip install any dependencies
|
|
58
|
+
* pip freeze to create requirements.txt
|
|
59
|
+
|
|
60
|
+
## Tools install
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
python -m pip install --upgrade pip
|
|
64
|
+
python -m pip install --upgrade build
|
|
65
|
+
python -m pip install --upgrade twine
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Create pyproject.toml
|
|
69
|
+
under project folder create pyproject.toml
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
[build-system]
|
|
73
|
+
requires = ["setuptools"]
|
|
74
|
+
build-backend = "setuptools.build_meta"
|
|
75
|
+
|
|
76
|
+
[project]
|
|
77
|
+
name = "dtscore_dsmi"
|
|
78
|
+
version = "0.0.2"
|
|
79
|
+
authors = [
|
|
80
|
+
{ name="D. Smith", email="dgsmith.hpot@gmail.com" },
|
|
81
|
+
]
|
|
82
|
+
description = "DTS Core Services"
|
|
83
|
+
readme = "README.md"
|
|
84
|
+
requires-python = ">= 3.10"
|
|
85
|
+
dependencies = [
|
|
86
|
+
'requests>=2.31',
|
|
87
|
+
'importlib-metadata; python_version>="3.10"',
|
|
88
|
+
'urllib3>=2.0'
|
|
89
|
+
]
|
|
90
|
+
classifiers = [
|
|
91
|
+
'Development Status :: 5 - Production/Stable',
|
|
92
|
+
'Environment :: Console',
|
|
93
|
+
'Intended Audience :: Developers',
|
|
94
|
+
'License :: OSI Approved :: BSD License',
|
|
95
|
+
'Operating System :: Microsoft :: Windows :: Windows 11',
|
|
96
|
+
'Programming Language :: Python :: 3.10',
|
|
97
|
+
]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Build the distribution
|
|
101
|
+
|
|
102
|
+
* delete any previous versions from the dist folder
|
|
103
|
+
* check version number in pyproject.toml
|
|
104
|
+
|
|
105
|
+
| Command | Result |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| python -m build |builds the application<br/> |
|
|
108
|
+
| twine upload --repository testpypi dist/* |upload distribution to testpypi, or<br/> |
|
|
109
|
+
| twine upload dist/* |upload distribution to pypi |
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|