Compare commits

...

9 Commits

8 changed files with 272 additions and 11 deletions

View File

@ -1,4 +1,5 @@
{
"editor.default_syntax" : "python",
"workspace.art_style" : 0,
"workspace.color" : 2,
"workspace.name" : "jwst-plotter"

View File

@ -0,0 +1,9 @@
{
"identifier" : "65C0B698-D114-41B3-8F58-13D74F7D3E93",
"ignoredFilePatterns" : [
"data.csv"
],
"remotePath" : "\/home\/phlaym\/jwst-plotter",
"server" : "Phlaym",
"usesPublishing" : true
}

View File

@ -6,5 +6,5 @@
}
},
"identifier" : "EADBCF2F-F2FC-418C-9C08-EBAE9F98C8BD",
"openLogOnRun" : "fail"
"openLogOnRun" : "start"
}

View File

@ -1,5 +1,13 @@
Reads and plots the current teperatures of the James Webb Space Telescope.
Reads and plots the current temperatures of the James Webb Space Telescope.
`load.py` loads the same source that [Where is Webb](https://webb.nasa.gov/content/webbLaunch/whereIsWebb.html?units=metric) uses and saves it to a CSV file.
`graph.py` reads that CSV file and plots the data
`graph.py` reads that CSV file and plots the data.
A current graph can be found [here](https://phlaym.net/jwst/jwst_tempertature.png):
![https://phlaym.net/jwst/jwst_tempertature.png](https://phlaym.net/jwst/jwst_tempertature.png)
with the corresponding dataset at: [https://phlaym.net/jwst/data.csv](https://phlaym.net/jwst/data.csv).
Data is currently updated every 4 hours, but I'm filtering it before generating the graph: If the temperatures don't change for a few while, keep only the first
and last of these points.

126
graph.py
View File

@ -5,11 +5,49 @@ import datetime
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib.dates as md
from screeninfo import get_monitors
from screeninfo.common import ScreenInfoError
SHOW_DEPLOYMENTS = True
FILTER_DEPLOYMENTS = True
plt.rcParams["figure.autolayout"] = True
plt.rcParams['figure.figsize'] = (16, 10)
data_frame = pd.read_csv("data.csv", delimiter=';')
# Filter rows, so that only the following will be kept:
# First and last rows,
# rows which have a different temperature than the one before,
# and rows which have a different temperature than the one after.
#
# Basically: If the temperatures don't change for a few rows, keep only the first
# and last of that run
last_row = None
timestamps_to_keep = []
for row in data_frame.iterrows():
# row is actually a tuple with index at 0 and the row data at 1. We care only about the row data
row = row[1]
# First row: Always keep it
if last_row is None:
last_row = row
timestamps_to_keep.append(row['timestamp'])
continue
# Any temp changed?
keep_row = (last_row['tempWarmSide1C'] != row['tempWarmSide1C'] or
last_row['tempWarmSide2C'] != row['tempWarmSide2C'] or
last_row['tempCoolSide1C'] != row['tempCoolSide1C'] or
last_row['tempCoolSide2C'] != row['tempCoolSide2C'])
# Keep this and the previous row
if keep_row:
timestamps_to_keep.append(last_row['timestamp'])
timestamps_to_keep.append(row['timestamp'])
last_row = row
# Always keep the last row
timestamps_to_keep.append(data_frame.iloc[-1:]['timestamp'])
# Filter rows by the timestamps we just saved
data_frame = data_frame[data_frame.timestamp.isin(timestamps_to_keep)]
# Subplot, to move legend next to plot
# 1 row, 1 col, index: 1
plt.subplot(1, 1, 1)
@ -27,22 +65,96 @@ ax.xaxis.set_major_formatter(xfmt)
ax.set_ylabel('Temperature [°C]')
# Data
plt.plot(datenums, data_frame.tempWarmSide1C, label='Warm 1', color='orange', marker='x')
plt.plot(
datenums,
data_frame.tempWarmSide1C,
label='Sunshield UPS\nAverage Temperature (a)',
color='orange',
marker='x'
)
for i, j in zip(datenums, data_frame.tempWarmSide1C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
plt.plot(datenums, data_frame.tempWarmSide2C, label='Warm 2', color='orangered', marker='x')
plt.plot(
datenums,
data_frame.tempWarmSide2C,
label='Spacecraft Equipment Panel\nAverage Temperature (b)',
color='orangered',
marker='x'
)
for i, j in zip(datenums, data_frame.tempWarmSide2C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
ax.annotate(str(round(j, 2)), xy=(i, j-30), rotation=300)
plt.plot(datenums, data_frame.tempCoolSide1C, label='Cool 1', color='blue', marker='x')
plt.plot(
datenums,
data_frame.tempCoolSide1C,
label='Primary Mirror\nAverage Temperature (c)',
color='blue',
marker='x')
for i, j in zip(datenums, data_frame.tempCoolSide1C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
plt.plot(datenums, data_frame.tempCoolSide2C, label='Cool 2', color='navy', marker='x')
plt.plot(datenums, data_frame.tempCoolSide2C, label='Instrument Radiator\nTemperature', color='navy', marker='x')
for i, j in zip(datenums, data_frame.tempCoolSide2C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
ax.annotate(str(round(j, 2)), xy=(i, j-30), rotation=300)
plt.axhline(y=-223, color='darkblue', linestyle=':', label='Operating temperature')
plt.ylim(ymin=-273.15)
launch_date = datetime.datetime.fromisoformat('2021-12-25T12:20+00:00')
deployment_names = [
'Sunshield Pallet',
'DTA Deployment',
'Sunshield Covers Release',
'Sunshield Mid-Boom',
'Sunshield Layer Tensioning Ongoing',
'Sunshield Tensioning Complete',
'Secondary Mirror Deployment',
'Aft Deployed Instrument Radiator',
'Port Primary Mirror Wing',
'WEBB IS FULLY DEPLOYED!',
'Individual Mirror Segment Movements',
'L2 Insertion Burn',
'WEBB IS ORBITING L2'
]
# deployment dates, based on "+ X days"
deployment_dates = [md.date2num(launch_date + datetime.timedelta(days=x)) for x in [
3,
4,
5,
6,
9,
10,
11,
12,
13,
14,
15,
26,
29.5]
]
latest_available_temp_date = max(datenums)
earliest_available_temp_date = min(datenums)
deployments_data = zip(deployment_names, deployment_dates)
filtered_deployments_data = (filter(lambda tup:
tup[1] >= earliest_available_temp_date and
tup[1] <= latest_available_temp_date, deployments_data)
if FILTER_DEPLOYMENTS else deployments_data)
max_temp = max(max(data_frame.tempWarmSide1C), max(data_frame.tempWarmSide2C))
if SHOW_DEPLOYMENTS:
for label, date in filtered_deployments_data:
plt.axvline(x=date, color='gray', linestyle=':')
plt.text(x=date, y=max_temp+30, s=label, rotation=25)
plt.legend(bbox_to_anchor=(1, 1), loc="upper left")
plt.show()
try:
get_monitors()
plt.show()
except ScreenInfoError:
plt.savefig("jwst_tempertature.png", dpi=300)

109
poetry.lock generated
View File

@ -25,6 +25,14 @@ category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "cython"
version = "0.29.26"
description = "The Cython compiler for writing C extensions for the Python language."
category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "fonttools"
version = "4.28.5"
@ -129,6 +137,25 @@ category = "main"
optional = false
python-versions = ">=3.7"
[[package]]
name = "pyobjc-core"
version = "8.1"
description = "Python<->ObjC Interoperability Module"
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "pyobjc-framework-cocoa"
version = "8.1"
description = "Wrappers for the Cocoa frameworks on macOS"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
pyobjc-core = ">=8.1"
[[package]]
name = "pyparsing"
version = "3.0.6"
@ -177,6 +204,18 @@ urllib3 = ">=1.21.1,<1.27"
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
[[package]]
name = "screeninfo"
version = "0.8"
description = "Fetch location and size of physical screens."
category = "main"
optional = false
python-versions = ">=3.6.2,<4.0.0"
[package.dependencies]
Cython = {version = "*", markers = "sys_platform == \"darwin\""}
pyobjc-framework-Cocoa = {version = "*", markers = "sys_platform == \"darwin\""}
[[package]]
name = "setuptools-scm"
version = "6.3.2"
@ -224,7 +263,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8.2, <3.11"
content-hash = "5da99d287600235221575523238af2a0f760f744549b8c4d82c2853d801d4a92"
content-hash = "dacbb1cb93f13aee4dae3562fa02e1a383b522282ad09dace6500b5ab343d4c9"
[metadata.files]
certifi = [
@ -239,6 +278,54 @@ cycler = [
{file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
{file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
]
cython = [
{file = "Cython-0.29.26-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c4b003b6b7aa9e74552ef8d4e6009b3e3c3e8fa585710b3a6d062e088e460c1b"},
{file = "Cython-0.29.26-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ce804a021c92fea66c8c100781a111706f21bade7a546895c5a9c57fe2df8b24"},
{file = "Cython-0.29.26-cp27-cp27m-win32.whl", hash = "sha256:8e07121b34221458a2151d37e137b8f5b011a9c51dd38db2499a6198590aa319"},
{file = "Cython-0.29.26-cp27-cp27m-win_amd64.whl", hash = "sha256:233a87db76941626f1db08f4b25a4a5b425b13b64ed0e673c3641f7b650a48d8"},
{file = "Cython-0.29.26-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:93840f2071c1f15e613509eadee1fbcd335e8666772437fe5038e24059edd48c"},
{file = "Cython-0.29.26-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:10402f0f1564ffc6ecb9c45e07f995771d05bb0b0e1d151e40574638292ee3a5"},
{file = "Cython-0.29.26-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:6773cce9d4b3b6168d8feb2b6f06b658ef1e11cbfec075041745666d8e2a5e45"},
{file = "Cython-0.29.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c813799d533194b7d85203d881d8b4f567a8c644a67f50d47f1ffbf316df412f"},
{file = "Cython-0.29.26-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:362fbb9cb4627c7786231429768b54aaba5459a2a0e46c25e59f202ca6155437"},
{file = "Cython-0.29.26-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b834ff6e4d10ba6d7a0d676dd71c1b427a181ddbbbbf79e91d1861557aab59f"},
{file = "Cython-0.29.26-cp34-cp34m-win32.whl", hash = "sha256:0c3093bc99facfc97e5019f6c5bc39987663792265c1334d9fc9e37c3a3dcd6f"},
{file = "Cython-0.29.26-cp34-cp34m-win_amd64.whl", hash = "sha256:bbf0149680c1fca07200a3ed372b22e6bad7851d191b717a61f9a68af370e180"},
{file = "Cython-0.29.26-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1cc55db32cd39474081d478263b96e036552cdbbab8831c90ea43fb385a9b66"},
{file = "Cython-0.29.26-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ebe32e002a9e6553de399033e259ece72aa17c77f740b265e66f122572a8a278"},
{file = "Cython-0.29.26-cp35-cp35m-win32.whl", hash = "sha256:6b385f68789c3e8a75b4827e8a4970ff04605ad3cb1c0b41005cc69368dad65d"},
{file = "Cython-0.29.26-cp35-cp35m-win_amd64.whl", hash = "sha256:1519eb639de308f5763eb0666b4cc7bd3958268f3f6228cc610b7b4d6c94b68b"},
{file = "Cython-0.29.26-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e118525defec3f67471d8ee5ce04340d43195410a87e5d7ec8a1a9e953c0066a"},
{file = "Cython-0.29.26-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:706ea55f58c2722206e51cd9a8754ed0995c4c4231d24b095875d2641d745222"},
{file = "Cython-0.29.26-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:77913fe27c5e22c995bac090d01e200ff91e5f58aa944e2d2e94cbf67ea2ae34"},
{file = "Cython-0.29.26-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:51923120f57a42c59f5ee6bba9e89a31a394ae8cd419c753f64d8a3aea1ee8b7"},
{file = "Cython-0.29.26-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:82881565d04027728d7762edd8c085927a840873af7ee049d703e0ca226bc08d"},
{file = "Cython-0.29.26-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:531303085503959338e6cdac630626280ef111aecbb22d48321673a8c3897c0a"},
{file = "Cython-0.29.26-cp36-cp36m-win32.whl", hash = "sha256:0205b685802eb4c039b14f67b7ac3f00c55ff04b9e3871df2249576d3e59ba42"},
{file = "Cython-0.29.26-cp36-cp36m-win_amd64.whl", hash = "sha256:7df94e56872df8f396ca669466fee60256f69f678654239f706b1e643c2ac4a5"},
{file = "Cython-0.29.26-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4b7d04b393d9a4b5fec0cbc4b0f29fe083a9d862d95231a6e7608978bd661d7e"},
{file = "Cython-0.29.26-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:af91dd63ac5f1f7fc70dc91ea063f727db42b5eb934d1f3832611be18e25171e"},
{file = "Cython-0.29.26-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:d83dad8dc6c63706cb3178dc79010b3865b1345090727189d2cd61758a825ee8"},
{file = "Cython-0.29.26-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca10e9fde0eaba1407ab353ff07a26daaa3e4dbe356108a149e482d441f070dd"},
{file = "Cython-0.29.26-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fec66cd0a48697fab903854566235aecf1084f62e3163d6589ae7335a1b4d448"},
{file = "Cython-0.29.26-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b3041e45aefaa4449fd671902132c0ac1f72eedaedac745c0e1a70a13bf990bb"},
{file = "Cython-0.29.26-cp37-cp37m-win32.whl", hash = "sha256:ed76fb98979f02b5e89079906071983a36f3634d3028b86f935cf0196f24fcaa"},
{file = "Cython-0.29.26-cp37-cp37m-win_amd64.whl", hash = "sha256:4d868e1a41f5123f51a20c1b8e82f7cb6fa3370c104e98e707f7c910e8cadad1"},
{file = "Cython-0.29.26-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:868f309095e557f06dc58723ae865e8c65cfedb2646a562bd8080c92d69e4e4b"},
{file = "Cython-0.29.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:be550b566345bf53b95616334793ce42a128cf1d9dcde1e28cbf7ce52ea61d6d"},
{file = "Cython-0.29.26-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:be13be1e2b9b7395588f2a23bfa692f2f3e6f7936ccf7825c83431b8c8c3452b"},
{file = "Cython-0.29.26-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:41ee918480371ae5e5851ba9b1ead5a183e24aedb27bf807c7405d124e943f40"},
{file = "Cython-0.29.26-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c91b1ba0d43f7f7ccde8121c672207c7891735ddcc83496af1e0ab617ddc4aba"},
{file = "Cython-0.29.26-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5ecf5cf5b57086cc6c1cfc76d6353bbd7023e95da32e0883f1302ca50e481c33"},
{file = "Cython-0.29.26-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0ffce25bf50fa926ec6bf8d6f29650e7cb33fae445938c9880e1ce9b776353ef"},
{file = "Cython-0.29.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5041adfef502d67ecd5e291a7cf645a37fed7a9dac557f40d491053f35204d00"},
{file = "Cython-0.29.26-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:5fd5db458c9d3d2c2abd047f3190624d9cce8a80a8e0ca0baa69cfd133a523bc"},
{file = "Cython-0.29.26-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:75eaa22911d2ec37a3841f77b710b178c805cd378b5e1c4fb82dbc35620d2062"},
{file = "Cython-0.29.26-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3aed8c642e8fb27024bca46830b7f62335a44a92354acf708d6b8d050f945a3a"},
{file = "Cython-0.29.26-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b5ca05c2bfba0c2480b5fd390ecffe46b8da574d887d600388d6e3caf3f99a88"},
{file = "Cython-0.29.26-py2.py3-none-any.whl", hash = "sha256:f5e15ff892c8afad64931ee3dd723c4755c2c516606f9aae7613bebfac62b0f6"},
{file = "Cython-0.29.26.tar.gz", hash = "sha256:af377d543a762867da11fcf6e558f7a4a535ff8693f30cce123fab10c00fa312"},
]
fonttools = [
{file = "fonttools-4.28.5-py3-none-any.whl", hash = "sha256:edf251d5d2cc0580d5f72de4621c338d8c66c5f61abb50cf486640f73c8194d5"},
{file = "fonttools-4.28.5.zip", hash = "sha256:545c05d0f7903a863c2020e07b8f0a57517f2c40d940bded77076397872d14ca"},
@ -427,6 +514,22 @@ pillow = [
{file = "Pillow-9.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95545137fc56ce8c10de646074d242001a112a92de169986abd8c88c27566a05"},
{file = "Pillow-9.0.0.tar.gz", hash = "sha256:ee6e2963e92762923956fe5d3479b1fdc3b76c83f290aad131a2f98c3df0593e"},
]
pyobjc-core = [
{file = "pyobjc-core-8.1.tar.gz", hash = "sha256:920914a1a4cd4f8a54babe93f0b4e4cd93b51d11ae38d8ef17f5edb603b7a949"},
{file = "pyobjc_core-8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ddd9b964df292fa0bbd0d0694befe4c524977780e3f11221ac7e8683d5e9590f"},
{file = "pyobjc_core-8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b6662805d288cd1bfd257565ddc07541d0162b3167af15e39f7a654b94f6667b"},
{file = "pyobjc_core-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:43f251881fe36dcb9ca9f7946ab13ddb4aa2499bde3c8bf2dc8144b5fe884629"},
{file = "pyobjc_core-8.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:781cfa7a3f72ce7213b4c341b5c552cd63b6664b3b444a23fcb1d5fdd417aa8b"},
{file = "pyobjc_core-8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:951e716ad30bea52190f5e82604ee2c7f3dc6c04722cf0a3311ad7e4e6af5134"},
]
pyobjc-framework-cocoa = [
{file = "pyobjc-framework-Cocoa-8.1.tar.gz", hash = "sha256:9de42dc3e0911d6e30cf41bb4baf9aaf2723a27053f7edbd8ad7d758cf41b81d"},
{file = "pyobjc_framework_Cocoa-8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b588a3ed9adcdbfafcbfa77bbd72844afb8d987a70cce7a4f3a35a9474271a11"},
{file = "pyobjc_framework_Cocoa-8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:626f6d084a537b365c0786674036643695e7829ebaf7889aa9b327f3b897a800"},
{file = "pyobjc_framework_Cocoa-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8075f6cf8cac804d9ed05355c68a8a0cd3ce31a310469279c6c7e49dad47b010"},
{file = "pyobjc_framework_Cocoa-8.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9e47a2709b8458422752efccaa89f4b52cc8e01345ec71c43c713a891f084bb6"},
{file = "pyobjc_framework_Cocoa-8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0b0aee74f6c32103338e3735f308052f4cc534c25762130303638aaa6d62d851"},
]
pyparsing = [
{file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
{file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
@ -443,6 +546,10 @@ requests = [
{file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
{file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"},
]
screeninfo = [
{file = "screeninfo-0.8-py3-none-any.whl", hash = "sha256:dac455fbed79e82c481d59a00962f543e5a9bf3c2cc9f0e48e2714eb8d3cec23"},
{file = "screeninfo-0.8.tar.gz", hash = "sha256:9501bf8b8458c7d1be4cb0ac9abddddfa80b932fb3f65bfcb54f5586434b1dc5"},
]
setuptools-scm = [
{file = "setuptools_scm-6.3.2-py3-none-any.whl", hash = "sha256:4c64444b1d49c4063ae60bfe1680f611c8b13833d556fd1d6050c0023162a119"},
{file = "setuptools_scm-6.3.2.tar.gz", hash = "sha256:a49aa8081eeb3514eb9728fa5040f2eaa962d6c6f4ec9c32f6c1fba88f88a0f2"},

View File

@ -10,6 +10,7 @@ requests = "^2.26.0"
numpy = "1.21.5"
matplotlib = "3.5.1"
pandas = "^1.3.5"
screeninfo = "^0.8"
[tool.poetry.dev-dependencies]

23
requirements.txt Normal file
View File

@ -0,0 +1,23 @@
certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
charset-normalizer==2.0.10; python_full_version >= "3.6.0" and python_version >= "3"
cycler==0.11.0; python_version >= "3.7"
cython==0.29.26; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and sys_platform == "darwin"
fonttools==4.28.5; python_version >= "3.7"
idna==3.3; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5"
kiwisolver==1.3.2; python_version >= "3.7"
matplotlib==3.5.1; python_version >= "3.7"
numpy==1.21.5; python_version >= "3.7" and python_version < "3.11"
packaging==21.3; python_version >= "3.7"
pandas==1.3.5; python_full_version >= "3.7.1"
pillow==9.0.0; python_version >= "3.7"
pyobjc-core==8.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and sys_platform == "darwin" and python_version >= "3.6"
pyobjc-framework-cocoa==8.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and sys_platform == "darwin" and python_version >= "3.6"
pyparsing==3.0.6; python_version >= "3.7"
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7"
pytz==2021.3; python_full_version >= "3.7.1"
requests==2.27.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
screeninfo==0.8; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
setuptools-scm==6.3.2; python_version >= "3.7"
six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7"
tomli==2.0.0; python_version >= "3.7"
urllib3==1.26.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4"