Skip to main content

1. Thermodynamic Cycles Package

1.1. Fluid Source

1.1.1. Input parameters

Symbol Description SI Units Used Units
Ti_degC Inlet temerature K °C
fluid Fluid/Refrigerant name String "air","ammonia","R134a",...
F_kgs, F_Sm3s, F_m3s, F_Sm3h, F_m3h, F_kgh Input Flow rate kg/s kg/s, Sm3/s, m3/s, Sm3/h, m3/h, kg/h
Pi_bar Inlet Pressure Pa bara
from ThermodynamicCycles.Source import Source

#Create Compressor Object
SOURCE=Source.Object()

#Data Input
SOURCE.Pi_bar=1.01325
SOURCE.fluid="air"
SOURCE.F_kgs=1
#SOURCE.F_Sm3s=2937.482966/3600 #SOURCE.F_m3s=2480.143675/3600
#SOURCE.F_Sm3h=1 #SOURCE.F_m3h=2480.143675 #SOURCE.F_kgh=3600

#Calculate Object
SOURCE.calculate()

#Data output
print(SOURCE.df)

1.2. Sink

1.2.1. Test Sink

from ThermodynamicCycles.Sink import Sink
#from ThermodynamicCycles.Connect import Fluid_connect

#Create Sink object
SINK=Sink.Object()

#Fluid_connect(SINK.Inlet,SOURCE.Outlet) 
SINK.Inlet.fluid="air"
SINK.Inlet.F_kgs=0.334
SINK.Inlet.P=101325
SINK.Inlet.h=420000

#calculate SINK
SINK.calculate()

#Print result

print(SINK.df)
print(SINK.To_degC)

Output data

1.3. Compressor

1.3.1. Compressor model

from ThermodynamicCycles.Source import Source
from ThermodynamicCycles.Compressor import Compressor
from ThermodynamicCycles.Sink import Sink
from ThermodynamicCycles.Connect import Fluid_connect

#Create Compressor Object with Source and fluid Sink
SOURCE=Source.Object()
COMP=Compressor.Object()
SINK=Sink.Object()

#Data Input
SOURCE.Ti_degC=20
SOURCE.fluid="air"
SOURCE.Pi_bar=1
SOURCE.F_Sm3h=500 # is not considered if  COMP.Qcomp is not None

COMP.eta_is=0.80
COMP.Tdischarge_target=80 # (discharge temperature in degC, after cooler)
COMP.HP=7.5*100000 # discharge pressure in Pa
COMP.Qcomp=48745.761 # if Energy Power is given (W) the Mass flow rate is recalculated


#Calculate and Connect Objects
SOURCE.calculate()
Fluid_connect(COMP.Inlet,SOURCE.Outlet)
COMP.calculate()
Fluid_connect(SINK.Inlet,COMP.Outlet)
SINK.calculate()

#Data output (print DataFrame)
print(SOURCE.df)
print(COMP.df)
print(SINK.df)
# EnergySystemModels Energy System Models for Energy Efficiency Calculation

1.4. Water Heat Storage

1.4.1. Mixed Tank

from ThermodynamicCycles import MixedStorage
from ThermodynamicCycles.Source import Source
from ThermodynamicCycles.Sink import Sink
from ThermodynamicCycles.Connect import Fluid_connect


#lecture d'un fichier excel
#pip install pandas
import pandas as pd
import os
data=pd.read_excel( os.path.join(os.path.dirname(__file__), 'HotWaterStorage.xlsx'))
data['Timestamp'] = pd.to_datetime(data['Timestamp'], unit="%d/%m/%y %H:%M:%S")
rows = data.shape[0]
print(rows)
print(data.columns)

#initialiser les table de sortie
df_result=pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
df_source=pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
df_str=pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
df_sink=pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

#CreateTank Object with Source and fluid Sink
SOURCE=Source.Object()
SINK=Sink.Object()
STR=MixedStorage.Object()

#paramètres
STR.V=4
STR.Tinit_degC=40
STR.t=1*3600 #in seconde

for r in range(1, rows):
#Data Input
    SOURCE.Ti_degC=data["TdegC"][r] 
    SOURCE.fluid="water"
    SOURCE.Pi_bar=1
    SOURCE.F_m3h=data["F_m3h"][r] 

    SOURCE.Timestamp=data["Timestamp"][r]
    STR.Timestamp=data["Timestamp"][r]
    SINK.Timestamp=data["Timestamp"][r]

    #calcul du pas de temps
    Timestamp=data["Timestamp"][r] 
    dt=(data["Timestamp"][r]-data["Timestamp"][r-1]).total_seconds()
    #print(dt)
    STR.t=dt

    SOURCE.calculate()
    Fluid_connect(STR.Inlet,SOURCE.Outlet)
    STR.calculate()
    Fluid_connect(SINK.Inlet,STR.Outlet)
    SINK.calculate()

    df_str=df_str.append(STR.df.T)
    df_source=df_source.append(SOURCE.df.T)
    df_sink=df_sink.append(SINK.df.T)
  
# Add new column to the DataFrame
df_result=df_str.merge(df_sink, on=['Timestamp']).merge(df_source, on=['Timestamp'])
print(df_result)

with pd.ExcelWriter('output_WaterStorage.xlsx') as writer:                #Création d'un fichier de sortie + Ecriture
    df_result.to_excel(writer, sheet_name='Feuille output',index=False)
    data.to_excel(writer, sheet_name='Feuille input',index=False)

####PLOT#####

# Import Library

import matplotlib.pyplot as plt
df_result.index=df_result['Timestamp']

# to set the plot size
plt.figure(figsize=(16, 8), dpi=100)

# Plot
df_result["str_Ti_degC"].plot(marker="o",label='Tentrèe (°C)', color='orange')
df_result["str_T_degC"].plot(marker="o",label='Tsortie (°C)')
df_result["cumul_Qstr_kWh"].plot(marker="o",label='Energie stockée cumulée (kWh)')
df_result["Qstr_kW"].plot(marker="o",label='Puissance de stockage (kW)')

# Labelling 

plt.xlabel("Date")
plt.ylabel("kWh, kW et °C")
plt.legend()
plt.grid()
plt.title("Stockage d'énergie thermique")

# Display

plt.show()

2. AHU modules

2.1 Fresh AHU Example

# =============================================================================
# AHU Model (Fresh air + Heating Coil + humidifier)
# =============================================================================

#module de calcul des prop d'air humide
from AHU import FreshAir
#Heating Coil Component
from AHU import HeatingCoil
#composant Humidifier (vapeur ou adiabatique)
from AHU.Humidification import Humidifier
# connexion entre les composants
from AHU.Connect import Air_connect

##########Création des Objects
AN=FreshAir.Object()
BC=HeatingCoil.Object()
HMD=Humidifier.Object()

    
#Récupération des données entrées par l'utilisateur
        #AN
AN.m_vol=3000 #m3/h
#print("AN.m_vol = ",AN.m_vol)
AN.T=14 #°C
AN.HR_FreshAir=71 # %
    #BC
BC.T_out_target=15 #°C
    #Humidifier
HMD.HA_out_target=8 #g/Kg dry air

    #calculate les propriétés d'air neuf; !important
AN.calculate()

Air_connect(BC.Inlet,AN.Outlet)
BC.calculate()
    

Air_connect(HMD.Inlet,BC.Outlet)
    
HMD.HumidType="vapeur" #par default : Humdificateur adiabatique
HMD.calculate()


#enregistrer les résultats du module d'air neuf

#Absolute Humidity  g/kg_as

print("Fresh Air Absolute Humidity  g/kg_as",round(AN.HA,1))
# print("HA_FreshAir[r-1] = ",HA_FreshAir[r-1])
#Sat Vapor Pressure  " Pa"

print("Fresh Air Sat Vapor Pressure   Pa",round(AN.Pvsat,0))
#Wet-Bulb Temperature  °C

print("Fresh Air Wet-Bulb Temperature  °C",round(AN.T_hum,1))
#Specific Enthalpy  KJ/Kg_as

print("Fresh Air Specific Enthalpy  KJ/Kg_as",round(AN.h,3))

#enregistrer les résultats de la Coil de préchauffage

# Specific Enthalpy KJ/Kg_as
print("Heating Coil Specific Enthalpy KJ/Kg_as",round(BC.h_out,1))
# Thermal Power  kW"
print("Heating Coil Thermal Power  kW",round(BC.Qth,1))
# Relative Humidity %"
print("Heating Coil Relative Humidity %",round(BC.HR_out,1))
    
print("Humidifier Steam mass flow rate Kg/s",round(HMD.m_water,3))  
print("Humidifier Dry air mass flow rate Kg/s",round(HMD.m_as,3)) 

# =============================================================================
# End AHU Model
# =============================================================================

3. Chiller Example

3.1. Launch Chiller Application (Tkinter GUI)

from TkinterGUI import Chiller

3.2. Create Oriented-Object Chiller

# =============================================================================
# Chiller Model (Evaporator + Compressor + Desuperheater + Condenser + Expansion_Valve)
# =============================================================================

# #ThermodynamicCycles
import CoolProp.CoolProp as CP
from ThermodynamicCycles.Evaporator import Evaporator
from ThermodynamicCycles.Compressor import Compressor
from ThermodynamicCycles.Desuperheater import Desuperheater
from ThermodynamicCycles.Expansion_Valve import Expansion_Valve
from ThermodynamicCycles.Condenser import Condenser
from ThermodynamicCycles.Connect import Fluid_connect

###############Create chiller component object ##################
EVAP=Evaporator.Object()
COMP=Compressor.Object()
DESURCH=Desuperheater.Object()
COND=Condenser.Object()
DET=Expansion_Valve.Object()
###############################################################

########################Cycle Inlet Parameters########################
#***************Evaporator parameters*******
fluid="R134a"
EVAP.fluid=fluid
EVAP.Inlet.F_kgs=1 #Kg/s
# T or P evap :
EVAP.LP_bar=2.930154 #bar
#EVAP.Ti_degC=0 #Tevap 
EVAP.surchauff=2 #superheating
EVAP.Inlet.h= CP.PropsSI('H','P',1*1e5,'T',40+273.15,fluid)   #initialisation pour le calcul en boucle
#******************compresseur parameters***********

# give HP or Tcond
#COMP.HP=1e5*10 #Pa
COMP.Tcond_degC=40
COMP.eta_is=0.8 # isentropic efficiency
COMP.Tdischarge_target=80 #°C compressor outlet temperature, neglected if compressor is not cooled
COMP.Qcomp==100000 #in (W) If this value is given, the mass flow rate is calculated /Write None if not used  #in (W) If this value is given, the mass flow rate is calculated
#*************** Condenser parameters**************
COND.subcooling=2 #°C subcooling


#calculation algorithme
EVAP.calculate() # evaporator initialisation
Fluid_connect(COMP.Inlet,EVAP.Outlet)
COMP.calculate()
Fluid_connect(DESURCH.Inlet,COMP.Outlet)
DESURCH.calculate()
Fluid_connect(COND.Inlet, DESURCH.Outlet)
COND.calculate()
Fluid_connect(DET.Inlet,COND.Outlet)
Fluid_connect(DET.Outlet,EVAP.Inlet)
DET.calculate()
Fluid_connect(EVAP.Inlet,DET.Outlet)
EVAP.calculate() # recalculate evaporator

# Cycle performance
EER=EVAP.Qevap/COMP.Qcomp
print("EER="+str(round(EER,1))+" ")
QcondTot=COND.Qcond+DESURCH.Qdesurch
print("QcondTot="+str(round(QcondTot/1000,1))+" kW")
COP=QcondTot/COMP.Qcomp
print("COP="+str(round(COP,1))+" ")

# ####### Print Results#######################"
print(COMP.df)
print(EVAP.df)
print(DESURCH.df)
print(COND.df)
print(DET.df)

# =============================================================================
# End Chiller Model
# =============================================================================

3. Pinch Analysis

from PinchAnalysis.PinchCalculation import PinchCalculation
import pandas as pd
import matplotlib.pyplot as plt

#DataFrame Input Data
df=pd.DataFrame({'id': [1, 2, 3, 4],
                   'name': ['stream1', 'stream2', 'stream3', 'stream4'],
                   'Ti': [200, 50, 125, 45],
                 'To': [50, 250, 124, 195],
                 'mCp': [3, 2,300,4],
                 'dTmin2': [5, 5, 10, 10],
                 'integration': [True, True, True, True]
                 })


#Pinch Calculation
T, plot_GCC, plot_ccf,plot_ccc,utilite_froide,utilite_chaude=PinchCalculation(df)

#Print the results
print("T",T)
print("GCC",plot_GCC[:,0])
print("ccf",plot_ccf[:,0])
print("ccc",plot_ccc[:,0])
print("utilite_froide",utilite_froide)
print("uilite_chaude",utilite_chaude)


# Plot the results

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(plot_ccf[:,0],T, color='tab:blue')
ax1.plot(plot_ccc[:,0],T, color='tab:red')
ax2.plot(plot_GCC[:,0],T, color='tab:orange')
ax1.set(xlabel='kW', ylabel='Temperature (°C)')
ax2.set(xlabel='kW')
ax1.grid(True)
ax2.grid(True)
plt.show()

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

EnergySystemModels-0.1.17.post38-py3-none-any.whl (161.4 kB view details)

Uploaded Python 3

File details

Details for the file EnergySystemModels-0.1.17.post38-py3-none-any.whl.

File metadata

File hashes

Hashes for EnergySystemModels-0.1.17.post38-py3-none-any.whl
Algorithm Hash digest
SHA256 85e2392d100f66123b3e83c61844de24d81dcbb69fea7d4807247b3abce2ef26
MD5 0195e6866dbc89518b083ccf986aa570
BLAKE2b-256 b9bcf1ef6f0bf202d0b72d7fa4619aad530a57950a64b73bb1258406ed00a001

See more details on using hashes here.

Release history Release notifications | RSS feed

20260805001

1 file

20260727010

1 file

20260727001

1 file

20260725003

1 file

20260725002

2 files

20260725001

2 files

20260724001

1 file

20260722006

1 file

20260722005

1 file

20260722004

1 file

20260722003

1 file

20260722002

1 file

20260722001

1 file

20260721001

1 file

20260715004

1 file

20260715003

1 file

20260715002

1 file

20260715001

1 file

20260708003

2 files

20260708002

2 files

20260708001

2 files

20260606003

2 files

20260606002

2 files

20260606001

2 files

20260530001

2 files

20260513005

2 files

20260513004

2 files

20260513003

2 files

20260513002

2 files

20260513001

2 files

20260511002

2 files

20260511001

2 files

20260503002

2 files

20260503001

2 files

20260501004

2 files

20260501003

2 files

20260501002

2 files

20260501001

2 files

20260416007

2 files

20260416006

2 files

20260416005

2 files

20260416004

2 files

20260416003

2 files

20260416002

2 files

20260416001

2 files

20260415001

2 files

20260409004

2 files

20260409003

2 files

20260409002

2 files

20260409001

2 files

20260408002

2 files

20260408001

2 files

20260407012

2 files

20260407011

2 files

20260407010

2 files

20260407009

2 files

20260407008

2 files

20260407007

2 files

20260407006

2 files

20260407005

2 files

20260407004

2 files

20260407003

2 files

20260407002

2 files

20260407001

2 files

20260403001

1 file

20260330002

1 file

20260330001

2 files

20260325002

1 file

20260325001

1 file

20260324003

2 files

20260324002

2 files

20260324001

2 files

20260323001

1 file

20260320004

1 file

20260320003

1 file

20260320002

1 file

20260320001

1 file

20260319004

1 file

20260319003

1 file

20260319002

1 file

20260319001

1 file

20260213002

1 file

20260213001

1 file

20251212001

1 file

20251205001

1 file

20251121001

1 file

20251120007

1 file

20251120006

1 file

20251120005

1 file

20251120004

1 file

20251120002

1 file

20251120001

1 file

20251119001

1 file

20251118006

1 file

20251118005

1 file

20251118004

1 file

20251118003

1 file

20251118002

1 file

20251118001

1 file

20251015002

1 file

20251015001

1 file

20251013001

1 file

20251006003

1 file

20251006002

1 file

20251006001

1 file

20251001001

1 file

20250929001

1 file

20250928007

1 file

20250928006

1 file

20250928005

1 file

20250928004

1 file

20250928003

1 file

20250928002

1 file

20250928001

1 file

20250927005

1 file

20250927004

1 file

20250927003

1 file

20250927002

1 file

20250927001

1 file

20250726002

1 file

20250726001

1 file

20250720003

1 file

20250720002

1 file

20250720001

1 file

20250630004

1 file

202506301

1 file

20250630.post4

1 file

20250630.post3

1 file

20250630.post2

1 file

0.1.25.18

1 file

0.1.25.post18

1 file

0.1.25.post17

1 file

0.1.25.post16

1 file

0.1.25.post15

1 file

0.1.25.post14

1 file

0.1.25.post13

1 file

0.1.25.post12

1 file

0.1.25.post11

2 files

0.1.25.post10

1 file

0.1.25.post9

1 file

0.1.25.post8

1 file

0.1.25.post7

1 file

0.1.25.post6

1 file

0.1.25.post5

1 file

0.1.25.post4

1 file

0.1.25.post3

1 file

0.1.25.post2

1 file

0.1.25.post1

1 file

0.1.24.post10

1 file

0.1.24.post9

1 file

0.1.24.post8

1 file

0.1.24.post7

1 file

0.1.24.post6

1 file

0.1.24.post5

1 file

0.1.24.post4

1 file

0.1.24.post3

1 file

0.1.24.post2

1 file

0.1.24.post1

1 file

0.1.23.post22

1 file

0.1.23.post21

2 files

0.1.23.post20

1 file

0.1.23.post19

1 file

0.1.23.post18

1 file

0.1.23.post17

1 file

0.1.23.post16

1 file

0.1.23.post15

1 file

0.1.23.post14

1 file

0.1.23.post13

1 file

0.1.23.post12

1 file

0.1.23.post11

1 file

0.1.23.post10

1 file

0.1.23.post9

1 file

0.1.23.post8

1 file

0.1.23.post7

1 file

0.1.23.post6

1 file

0.1.23.post5

1 file

0.1.23.post4

1 file

0.1.23.post3

1 file

0.1.23.post2

1 file

0.1.23.post1

1 file

0.1.23.post0

1 file

0.1.22.post8

1 file

0.1.22.post7

1 file

0.1.22.post6

1 file

0.1.22.post5

1 file

0.1.22.post4

1 file

0.1.22.post3

1 file

0.1.22.post2

1 file

0.1.22.post1

1 file

0.1.22.post0

1 file

0.1.21.post27

1 file

0.1.21.post26

1 file

0.1.21.post25

1 file

0.1.21.post24

1 file

0.1.21.post23

1 file

0.1.21.post22

1 file

0.1.21.post21

1 file

0.1.21.post20

1 file

0.1.21.post19

1 file

0.1.21.post17

1 file

0.1.21.post16

1 file

0.1.21.post15

1 file

0.1.21.post14

1 file

0.1.21.post13

1 file

0.1.21.post12

1 file

0.1.21.post11

1 file

0.1.21.post10

1 file

0.1.21.post9

1 file

0.1.21.post2

1 file

0.1.21.post1

1 file

0.1.21.post0

1 file

0.1.20.post22

1 file

0.1.20.post21

1 file

0.1.20.post20

1 file

0.1.20.post19

1 file

0.1.20.post18

1 file

0.1.20.post17

1 file

0.1.20.post16

1 file

0.1.20.post15

1 file

0.1.20.post14

1 file

0.1.20.post13

1 file

0.1.20.post12

1 file

0.1.20.post11

1 file

0.1.20.post10

1 file

0.1.20.post9

1 file

0.1.20.post8

1 file

0.1.20.post7

1 file

0.1.20.post6

1 file

0.1.20.post5

1 file

0.1.20.post4

1 file

0.1.20.post3

1 file

0.1.20.post2

1 file

0.1.20.post1

1 file

0.1.20.post0

1 file

0.1.19.post83

1 file

0.1.19.post82

1 file

0.1.19.post81

1 file

0.1.19.post80

1 file

0.1.19.post79

1 file

0.1.19.post78

1 file

0.1.19.post77

1 file

0.1.19.post76

1 file

0.1.19.post75

1 file

0.1.19.post74

1 file

0.1.19.post73

1 file

0.1.19.post72

1 file

0.1.19.post71

1 file

0.1.19.post70

1 file

0.1.19.post69

1 file

0.1.19.post68

1 file

0.1.19.post67

1 file

0.1.19.post66

1 file

0.1.19.post65

1 file

0.1.19.post64

1 file

0.1.19.post63

1 file

0.1.19.post61

1 file

0.1.19.post60

1 file

0.1.19.post59

1 file

0.1.19.post58

1 file

0.1.19.post57

1 file

0.1.19.post56

1 file

0.1.19.post54

1 file

0.1.19.post53

1 file

0.1.19.post52

1 file

0.1.19.post51

1 file

0.1.19.post50

1 file

0.1.19.post49

1 file

0.1.19.post48

1 file

0.1.19.post47

1 file

0.1.19.post45

1 file

0.1.19.post43

1 file

0.1.19.post42

1 file

0.1.19.post41

1 file

0.1.19.post40

1 file

0.1.19.post39

1 file

0.1.19.post38

1 file

0.1.19.post37

1 file

0.1.19.post36

1 file

0.1.19.post35

1 file

0.1.19.post34

1 file

0.1.19.post33

1 file

0.1.19.post32

1 file

0.1.19.post31

1 file

0.1.19.post30

1 file

0.1.19.post29

1 file

0.1.19.post28

1 file

0.1.19.post27

1 file

0.1.19.post26

1 file

0.1.19.post25

1 file

0.1.19.post24

1 file

0.1.19.post23

1 file

0.1.19.post22

1 file

0.1.19.post21

1 file

0.1.19.post20

1 file

0.1.19.post19

1 file

0.1.19.post18

1 file

0.1.19.post17

1 file

0.1.19.post16

1 file

0.1.19.post15

1 file

0.1.19.post14

1 file

0.1.19.post13

1 file

0.1.19.post12

1 file

0.1.19.post11

1 file

0.1.19.post9

1 file

0.1.19.post8

1 file

0.1.19.post7

1 file

0.1.19.post6

1 file

0.1.19.post5

1 file

0.1.19.post4

1 file

0.1.19.post3

1 file

0.1.19.post2

1 file

0.1.19.post1

1 file

0.1.19.post0

1 file

0.1.18.post29

1 file

0.1.18.post28

1 file

0.1.18.post27

1 file

0.1.18.post26

1 file

0.1.18.post25

1 file

0.1.18.post23

1 file

0.1.18.post21

1 file

0.1.18.post19

1 file

0.1.18.post18

1 file

0.1.18.post17

1 file

0.1.18.post16

1 file

0.1.18.post15

1 file

0.1.18.post14

1 file

0.1.18.post13

1 file

0.1.18.post12

1 file

0.1.18.post11

1 file

0.1.18.post10

1 file

0.1.18.post9

1 file

0.1.18.post8

1 file

0.1.18.post7

1 file

0.1.18.post6

1 file

0.1.18.post5

1 file

0.1.18.post4

1 file

0.1.18.post3

1 file

0.1.18.post2

1 file

0.1.18.post1

1 file

0.1.18.post0

1 file

0.1.17.post67

1 file

0.1.17.post66

1 file

0.1.17.post65

1 file

0.1.17.post63

1 file

0.1.17.post62

1 file

0.1.17.post61

1 file

0.1.17.post60

1 file

0.1.17.post59

1 file

0.1.17.post58

1 file

0.1.17.post57

1 file

0.1.17.post56

1 file

0.1.17.post55

1 file

0.1.17.post54

1 file

0.1.17.post52

1 file

0.1.17.post51

1 file

0.1.17.post50

1 file

0.1.17.post48

1 file

0.1.17.post47

1 file

0.1.17.post46

1 file

0.1.17.post45

1 file

0.1.17.post44

1 file

0.1.17.post43

1 file

0.1.17.post42

1 file

0.1.17.post41

1 file

0.1.17.post39

1 file

This release

0.1.17.post38 This release

1 file

0.1.17.post37

1 file

0.1.17.post36

1 file

0.1.17.post35

1 file

0.1.17.post34

1 file

0.1.17.post33

2 files

0.1.17.post32

1 file

0.1.17.post31

1 file

0.1.17.post30

1 file

0.1.17.post29

1 file

0.1.17.post28

1 file

0.1.17.post27

1 file

0.1.17.post26

1 file

0.1.17.post25

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page