Skip to main content

Library for calculating internal ballistics

Project description

PyBallistics

Python-библиотека для решения ОЗВБ в термодинамической и газодинамической постановках.

Установка

Установить библиотеку можно через менеджер пакетов pip. Для этого достаточно выполнить в консоли команду

pip install --upgrade pyballistics

Краткая инструкция по использованию

Пример расчета ОЗВБ в термодинамической постановке задачи AGARD:

from pyballistics import ozvb_termo, get_options_agard

opts = get_options_agard() # получить словарь с начальными данными задачи AGARD
result = ozvb_termo(opts)  # произвести расчет и получить результат

Переменная result является словарем, в котором находятся результаты расчета. Для визуализации части результатов можно воспользоваться следующим кодом:

import matplotlib.pyplot as plt # если нет библиотеки matplotlib, то установить ее можно при помощи команды pip install matplotlib

plt.plot(result['t'], result['p_m']) # среднебаллистическое давление от времени
plt.grid()  # сетка на графике
plt.show()  # показать график

В результате будет получен следующий график зависимости среднебаллистического давления (Па) от времени (с):

В словаре result есть все необходимые данные для дальнейшего анализа:

import numpy as np 

# максимальное давление
print(np.max(result['p_m']))
>>> 319103989.57

# дульная скорость
print(result['v_p'][-1])
>>> 671.16

# доля сгоревшего пороха
print(result['psi_1'][-1])
>>> 0.932

Более подробная инструкция

За сами расчеты ОЗВБ отвечают две функции: ozvb_termo и ozvb_lagrange. Они могут быть импортированы непосредственно из библиотеки:

from pyballistics import ozvb_termo, ozvb_lagrange

Функция ozvb_termo производит термодинамический расчет, а ozvb_lagrange - газодинамический в Лагранжевых координатах.

Обе эти функции на вход принимают словари, в которых хранятся все необходимые для расчета начальные данные. Примеры таких словарей можно получить из функций get_options_agard и get_options_sample:

from pyballistics import get_options_agard, get_options_sample

opts1 = get_options_agard()
opts2 = get_options_sample()

print(opts2)
# {
#   'powders': [
#       {'omega': 7, 'dbname': 'ДГ-4 15/1'},
#       {'omega': 6, 'dbname': '22/7'}],
#  'init_conditions': {
#       'q': 51.76,
#       'd': 0.122,
#       'W_0': 0.0325,
#       'phi_1': 1.02,
#       'p_0': 30000000.0 },
#  'igniter': {
#       'p_ign_0': 1000000.0},
#  'meta_termo': {
#       'dt': 5e-06, 
#       'method': 'rk2'},
#  'meta_lagrange': {
#       'CFL': 0.9, 
#       'n_cells': 150},
#  'stop_conditions': {
#       'v_p': 690, 
#       'p_max': 600000000.0, 
#       'x_p': 9}
# }

Словарь со входными данными является иерархической структурой данных (словарь словарей, списков и т.д.). Для указания всех данных, однозначно описывающих задачу ОЗВБ, словарь должен быть довольно громоздким и неудобным для формирования. Для упрощения формирования словаря многие входящие в него элементы имеют значения по умолчанию и их, в случае необходимости, можно не указывать. Однако есть ряд элементов и значений, которые указывать обязательно. Словарь со входными данными состоит из следующих элементов "верхнего уровня":

  • 'init_conditions' - обязательный раздел. В данном разделе хранится словарь с начальными данными:

    • 'q' - масса снаряда в кг.
    • 'd' - калибр, м.
    • 'W_0' - начальный объем каморы, м^3.
    • 'phi_1' - коэффициент, учитывающий силу трения в нарезах (участвует в формуле расчета коэффициента фиктивности массы снаряда).
    • 'p_0' - давление форсирования, Па.
    • 'T_0'(опционально) - начальная температура, К (значение по умолчанию 293.15 К).
    • 'n_S'(опционально) - коэффициент учета площади нарезов (*значение по умолчанию 1). Площадь поперечного сечения высчитывается по формуле S = n_S pi d^2 / 4 .
  • 'powders' - обязательный раздел. В данном разделе хранится список с данными по пороховым навескам, из которых состоит метательный заряд. Обязательно должен иметь хотя бы один элемент. Каждый элемент списка отвечает за свою навеску и тоже является словарем со следующими элементами:

    • 'omega' - масса навески заряда, кг.
    • 'dbname'(опционально) - имя пороха в БД. Если указать, то для остальных элементов будут определены значения по умолчанию. Если не указать, то все остальные элементы будет необходимо инициализировать (список доступных имен можно получить из функции get_powder_names). Т.е. при желании можно корректировать часть характеристик табличных порохов и брать у них остальные значения стандартными.
    • 'I_e'(опционально, если указан 'dbname') - импульс конца горения, Па с.
    • 'nu' (опционально, если указан 'dbname') - показатель в степенном законе горения (по умолчанию 1).
    • 'b'(опционально, если указан 'dbname') - коволюм пороховых газов, м^3/кг.
    • 'delta'(опционально, если указан 'dbname') - плотность пороха, кг/м^3.
    • 'f'(опционально, если указан 'dbname') - сила пороха, Дж/кг.
    • 'k'(опционально, если указан 'dbname') - коэффициент адиабаты пороховых газов.
    • 'T_p'(опционально, если указан 'dbname') - темп. горения пороха, К.
    • 'z_e'(опционально, если указан 'dbname') - относительная толщина сгоревшего слоя конца горения.
    • 'kappa_1'(опционально, если указан 'dbname') - коэффициент в геометрическом законе горения.
    • 'lambda_1'(опционально, если указан 'dbname') - коэффициент в геометрическом законе горения.
    • 'mu_1'(опционально, если указан 'dbname') - коэффициент в геометрическом законе горения.
    • 'kappa_2'(опционально, если указан 'dbname') - коэффициент в геометрическом законе горения.
    • 'lambda_2'(опционально, если указан 'dbname') - коэффициент в геометрическом законе горения.
    • 'mu_2'(опционально, если указан 'dbname') - коэффициент в геометрическом законе горения.
    • 'k_I'(опционально, если указан 'dbname') - коэффициент для пересчета импульса конца горения для других начальных температур, 1/K.
    • 'k_f'(опционально, если указан 'dbname') - коэффициент для пересчета силы пороха для других начальных температур, 1/K.
  • 'igniter' - обязательный раздел. В данном разделе хранится словарь с начальными данными, которые относятся к воспламенителю. Словарь имеет следующие элементы:

    • 'p_ign_0' - давление вспышки, Па.
    • 'k_ign'(опционально) - коэффициент адиабаты газов воспламенителя (значение по умолчанию 1.22).
    • 'T_ign'(опционально) - температура горения воспламенителя, К (значение по умолчанию 2427).
    • 'f_ign'(опционально) - сила воспламенителя, Дж/кг (значение по умолчанию 260 000 Дж/кг).
    • 'b_ign'(опционально) - коволюм газов воспламенителя, м^3/кг (значение по умолчанию 0.0006).
  • 'windage' - опциональный раздел. В данном разделе хранится словарь с начальными данными, которые относятся к силе сопротивления воздуха перед снарядом. Если не указывать этот элемент, то будут использованы значения по умолчанию. Словарь имеет следующие элементы:

    • 'shock_wave'(опционально) - флаг True/False, показывающий нужно ли рассчитывать давление ударной волны по формуле, или использовать просто статичное давление 'p_0a' (значение по умолчанию True).
    • 'p_0a'(опционально) - давление воздуха перед снарядом, Па (значение по умолчанию 100 000).
    • 'k_air'(опционально) - показатель адиабаты воздуха (значение по умолчанию 1.4).
    • 'c_0a'(опционально) - скорость звука в воздухе, м/с (значение по умолчанию 340).
  • 'heat' - опциональный раздел. В данном разделе хранится словарь с начальными данными, которые относятся к теплообмену ГПС со стволом. Если не указывать этот элемент, то будут использованы все значения по умолчанию. Словарь имеет следующие элементы:

    • 'enabled'(опционально) - флаг True/False, показывающий нужно ли учитывать теплообмен со стволом (значение по умолчанию True).
    • 'heat_barrel'(опционально) - флаг True/False, показывающий нужно ли учитывать рассчитвать динамически температуру стенки ствола, или температура стенок ствола не меняется (значение по умолчанию True).
    • 'F_0'(опционально) - начальная площадь теплоотдачи, м^2 (значение по умолчанию 4W_0/d).
    • 'Pr'(опционально) - число Прандля (значение по умолчанию 0.74).
    • 'T_w0'(опционально) - начальная температура стенки, К. Если не указывать - то будет взята начальная температура.
    • 'mu_0'(опционально) - коэффициент динамической вязкости пороховых газов для формулы Сазерленда, Па*с (значение по умолчанию 0.175e-4).
    • 'T_cs'(опционально) - тоже для формулы Сазерленда, К (значение по умолчанию 628).
    • 'T_0s'(опционально) - тоже для формулы Сазерленда, К (значение по умолчанию 273).
    • 'c_b'(опционально) - теплоемкость материала ствола, Дж/(кг * град) (значение по умолчанию 500).
    • 'rho_b'(опционально) - плотность материала ствола, кг/м^3 (значение по умолчанию 7900).
    • 'lambda_b'(опционально) - теплопроводность материала ствола, Вт/(м·град) (значение по умолчанию 40).
    • 'lambda_g'(опционально) - теплопроводность пороховых газов, Вт/(м·К) (значение по умолчанию 0.2218).
  • 'stop_conditions' - обязательный раздел. В данном разделе хранится словарь с начальными данными, которые относятся к условиям конца расчета. Должен иметь хотя бы один элемент (любой из нижеперечисленных). Если указано несколько условий, то расчет будет остановлен из-за условия, которое сработало раньше всего. Словарь имеет следующие элементы:

    • 't_max'(опционально) - с, прервать расчет при t > t_max.
    • 'steps_max'(опционально) - сделать максимум steps_max шагов интегрирования.
    • 'v_p'(опционально) - м/с, прервать расчет, когда скорость снаряда достигнет v_p.
    • 'x_p'(опционально) - м, прервать расчет, когда снаряд пройдет x_p метров (в начальный момент снаряд прошел 0 м).
    • 'p_max'(опционально) - Па, прервать расчет, если давление превысит p_max.
  • 'meta_termo' - обязательный раздел для термодинамического расчета. В данном разделе хранится словарь с начальными данными, которые относятся к мета-параметрам термодинамического расчета. Словарь имеет следующие элементы:

    • 'dt' - с, шаг по времени.
    • 'method'(опционально) - метод интегрирования. Возможные варианты: Эйлер - 'euler'; Рунге-Кутты 2 порядка -'rk2'; - Рунге-Кутты 4 порядка - 'rk4' (значение по умолчанию 'rk2').
  • 'meta_lagrange' - обязательный раздел для газодинамического расчета. В данном разделе хранится словарь с начальными данными, которые относятся к мета-параметрам газодинамического расчета. Словарь имеет следующие элементы:

    • 'n_cells' - количество ячеек сетки.
    • 'CFL' - число Куранта (0 < CFL < 1).
    • 'W'(опционально) - дополнительное требование для повышения устойчивости: последующий шаг по времени не может быть больше текущего в W раз.

Структура результатов термодинамической модели

В зависимости от результатов расчета, словарь может быть двух видов. Если в результате расчета произошла ошибка, то будет сформирован следующий словарь:

{
    'stop_reason': 'error',   # показывает, что в процессе расчета произошла ошибка
    'error_message': '...',   # описание ошибки
    'exception': Error('...'),# ссылка на саму ошибку (ее можно вызвать при помощи raise для трассировки) 
    'execution_time': float   # время выполнения функции в секундах
}

Пример:

result = ozvb_termo({})  # передаем пустой словарь
print(result)
>>> {
    'stop_reason': 'error',
    'error_message': 'В словаре opts обязательно должно быть поле "powders", в котором указываются параметры заряда. Пример правильного словаря opts можно получить из функции get_termo_options_sample()',
    'exception': ValueError('В словаре opts обязательно должно быть поле "powders", в котором указываются параметры заряда. Пример правильного словаря opts можно получить из функции get_termo_options_sample()'),
    'execution_time': 1.7400000047018693e-05
}

Если расчет прошел без ошибок, то словарь с результатами будет следующий:

{
    't': np.array([...]),     # numpy-массив с точками по времени в секундах, в которых были рассчитаны остальные значения 
    'p_m': np.array([...]),   # numpy-массив со среднебаллистическим давлением в Па
    'T': np.array([...]),     # numpy-массив с температурой ГПС в Кельвинах
    'x_p':np.array([...]),    # numpy-массив с положением снаряда в метрах (в начальный момент x_p==0)
    'v_p': np.array([...]),   # numpy-массив со скоростью снаряда в м/c (в начальный момент v_p==0)
    'Q_pa': np.array([...]),  # numpy-массив с суммарной энергией в Дж, потраченной на преодоление сил сопротивления атмосферному давлению перед снарядом
    'Q_w': np.array([...]),   # numpy-массив с суммарной энергией в Дж, отданной  ГПС на нагрев ствола
    'W_p': np.array([...]),   # numpy-массив с заснарядным объемом в м^3
    'W_c': np.array([...]),   # numpy-массив с объемом в м^3, занятым коволюмом ГПС и конденсированной фазой ГПС
    'T_w': np.array([...]),   # numpy-массив со средней температурой ствола в К
    'k': np.array([...]),     # numpy-массив с показателями адиабаты ГПС
    'z_1': np.array([...]),   # numpy-массив с относительной толщиной сгоревшего свода пороха навески №1
    'psi_1': np.array([...]), # numpy-массив с относительной массой сгоревшего пороха навески №1
    'z_2': np.array([...]),   # numpy-массив с относительной толщиной сгоревшего свода пороха навески №2
    'psi_2': np.array([...]), # numpy-массив с относительной массой сгоревшего пороха навески №2
        ...                   # и так N раз
    'stop_reason': str,       # причина остановки расчета ('t_max', 'steps_max', 'v_p', 'x_p', 'p_max')
    'execution_time': float   # время, потраченное на расчет, в секундах
}

Пример:

opts = get_options_sample()
result = ozvb_termo(opts)
print(result)
>>> {
    't':    array([0.   , 0.   , ..., 0.027, 0.027]),
    'p_m':  array([ 1000000.   ,  1002189.433, ..., 90680294.893, 90629603.46 ]),
    'T':    array([2427.   , 2427.487, ..., 1824.249, 1823.988]),
    'x_p':  array([0.   , 0.   , ..., 6.394, 6.398]),
    'v_p':  array([  0.   ,   0.   , ..., 689.994, 690.085]),
    'Q_pa': array([    0.   ,     0.   , ..., 45159.509, 45195.554]),
    'Q_w':  array([      0.   ,       0.   , ..., 3447622.549, 3449318.738]),
    'W_p':  array([0.033, 0.033, ..., 0.107, 0.107]),
    'W_c':  array([0.008, 0.008, ..., 0.014, 0.014]),
    'T_w':  array([293.15 , 293.15 , ..., 315.661, 315.661]),
    'k':    array([1.22 , 1.22 , ..., 1.238, 1.238]),
    'z_1':  array([0.   , 0.   , ..., 0.954, 0.954]),
    'psi_1':array([0.   , 0.   , ..., 0.954, 0.954]),
    'z_2':  array([0.   , 0.   , ..., 1.343, 1.343]),
    'psi_2':array([0.   , 0.   , ..., 0.987, 0.987]),
    'stop_reason': 'v_p',
    'execution_time': 0.21484209999971426
}

Структура результатов газодинамической модели

В зависимости от результатов расчета, словарь может быть двух видов. Если в результате расчета произошла ошибка, то будет сформирован следующий словарь:

{
    'stop_reason': 'error',   # показывает, что в процессе расчета произошла ошибка
    'error_message': '...',   # описание ошибки
    'exception': Error('...'),# ссылка на саму ошибку (ее можно вызвать при помощи raise для трассировки) 
    'execution_time': float   # время выполнения функции в секундах
}

Пример:

result = ozvb_lagrange({})  # передаем пустой словарь
print(result)
>>> {
    'stop_reason': 'error',
    'error_message': 'В словаре opts обязательно должно быть поле "powders", в котором указываются параметры заряда. Пример правильного словаря opts можно получить из функции get_termo_options_sample()',
    'exception': ValueError('В словаре opts обязательно должно быть поле "powders", в котором указываются параметры заряда. Пример правильного словаря opts можно получить из функции get_termo_options_sample()'),
    'execution_time': 1.7400000047018693e-05
}

Если расчет прошел без ошибок, то словарь с результатами будет следующий:

{
    'stop_reason': str,     # причина остановки расчета ('t_max', 'steps_max', 'v_p', 'x_p', 'p_max')
    'execution_time': float,# время выполнения расчета в секундах
    'layers': [             # список со словарями. В каждом словаре хранятся данные одного временного слоя
        {                       # Словарь первого временного слоя. Слой состоит из N ячеек
            't': 0.0,               # время временного слоя в секундах
            'step_count': 0,         # номер шага по времени
            'x': np.array([...]),    # numpy-массив координатами по длине узлов сетки в метрах, длина массива N+1
            'u': np.array([...]),    # numpy-массив со скоростями узлов сетки в м/с, длина массива N+1
            'T': np.array([...]),    # numpy-массив с температурами ГПС в ячейках в Кельвинах. Длина массива N
            'rho': np.array([...]),  # numpy-массив с плотностями ГПС в ячейках в кг/м^3. Длина массива N
            'p': np.array([...]),    # numpy-массив с давлениями ГПС в ячейках в Па. Длина массива N
            'T_w':np.array([...]),   # numpy-массив с температурами стенок ствола в ячейках в Кельвинах. Длина массива N
            'k':  np.array([...]),   # numpy-массив с показателями адиабаты ГПС в ячейках. Длина массива N
            'z_1': np.array([...]),  # numpy-массив с относительными толщинами сгоревшего свода пороха навески №1 по ячейкам. Длина массива N 
            'psi_1': np.array([...]),# numpy-массив с относительными массами сгоревшего пороха навески №1 по ячейкам. Длина массива N 
            'z_2':np.array([...]),   # numpy-массив с относительными толщинами сгоревшего свода пороха навески №2 по ячейкам. Длина массива N 
            'psi_2': np.array([...]),# numpy-массив с относительными массами сгоревшего пороха навески №2 по ячейкам. Длина массива N 
            ... # и так по всем навескам
        },
        {...},                 # Словарь второго временного слоя. Слой состоит из N ячеек
        {...},                 # Словарь третьего временного слоя. Слой состоит из N ячеек
        ...,                    и т.д.
    ]     # конец списка 'layers'
}

Пример:

opts = get_options_sample()
result = ozvb_lagrange(opts)
print(result)
>>> {
    'stop_reason': 'v_p',
    'execution_time': 0.167843300000186, 
    'layers': [
        {
            't': 0.0,
            'step_count': 0,
            'x': array([-2.78 , -2.762, ..., -0.019,  0.   ]),
            'u': array([0., 0., ..., 0., 0.]),
            'T': array([2427., 2427., ..., 2427., 2427.]),
            'rho': array([402.851, 402.851, ..., 402.851, 402.851]),
            'p': array([1000000., 1000000., ..., 1000000., 1000000.]),
            'T_w': array([293.15, 293.15, ..., 293.15, 293.15]),
            'k': array([1.22, 1.22, ..., 1.22, 1.22]),
            'z_1': array([0., 0., ..., 0., 0.]),
            'psi_1': array([0., 0., ..., 0., 0.]),
            'z_2': array([0., 0., ..., 0., 0.]),
            'psi_2': array([0., 0., ..., 0., 0.])
        },
        {
            't': 0.00026096741712768897,
            'step_count': 1,
            'x': array([-2.78 , -2.762, ..., -0.019,  0.   ]),
            'u': array([0., 0., ..., 0., 0.]),
            'T': array([2450.216, 2450.216, ..., 2450.216, 2450.216]),
            'rho': array([402.851, 402.851, ..., 402.851, 402.851]),
            'p': array([1114231.986, 1114231.986, ..., 1114231.986, 1114231.986]),
            'T_w': array([293.15, 293.15, ..., 293.15, 293.15]),
            'k': array([1.222, 1.222, ..., 1.222, 1.222]),
            'z_1': array([0., 0., ..., 0., 0.]),
            'psi_1': array([0., 0., ..., 0., 0.]),
            'z_2': array([0., 0., ..., 0., 0.]),
            'psi_2': array([0., 0., ..., 0., 0.])
        },
        ...
    ]
}

Дополнительные функции

В библиотеке также есть несколько дополнительных функций, описание к которым есть в их документации:

from pyballistics import get_full_options, get_db_powder, get_powder_names

print(get_full_options.__doc__)
print(get_db_powder.__doc__)
print(get_powder_names.__doc__)

Project details


Download files

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

Source Distribution

pyballistics-1.2.1.tar.gz (625.6 kB view details)

Uploaded Source

Built Distributions

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

pyballistics-1.2.1-cp312-cp312-win_amd64.whl (926.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pyballistics-1.2.1-cp312-cp312-win32.whl (869.0 kB view details)

Uploaded CPython 3.12Windows x86

pyballistics-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyballistics-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pyballistics-1.2.1-cp312-cp312-macosx_11_0_arm64.whl (959.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyballistics-1.2.1-cp311-cp311-win_amd64.whl (929.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pyballistics-1.2.1-cp311-cp311-win32.whl (873.6 kB view details)

Uploaded CPython 3.11Windows x86

pyballistics-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyballistics-1.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pyballistics-1.2.1-cp311-cp311-macosx_11_0_arm64.whl (958.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyballistics-1.2.1-cp310-cp310-win_amd64.whl (929.9 kB view details)

Uploaded CPython 3.10Windows x86-64

pyballistics-1.2.1-cp310-cp310-win32.whl (875.2 kB view details)

Uploaded CPython 3.10Windows x86

pyballistics-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyballistics-1.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pyballistics-1.2.1-cp310-cp310-macosx_11_0_arm64.whl (959.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyballistics-1.2.1-cp39-cp39-win_amd64.whl (930.7 kB view details)

Uploaded CPython 3.9Windows x86-64

pyballistics-1.2.1-cp39-cp39-win32.whl (875.9 kB view details)

Uploaded CPython 3.9Windows x86

pyballistics-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pyballistics-1.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pyballistics-1.2.1-cp39-cp39-macosx_11_0_arm64.whl (961.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pyballistics-1.2.1.tar.gz.

File metadata

  • Download URL: pyballistics-1.2.1.tar.gz
  • Upload date:
  • Size: 625.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyballistics-1.2.1.tar.gz
Algorithm Hash digest
SHA256 7ecb2da04c59a69f1e538e9b1ae9fb05b8ad42da74c77edb17cbc577bef7a1c2
MD5 5f299723e9e2849984722fd63fd8ae21
BLAKE2b-256 89cb024b9786bfe349352cc544b408d06b063cd8a4cad3f5081210bc0c1ecd77

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1.tar.gz:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f87b6565f8b4d1b99a9308f4d34c9dca248fcf99c809a8b5c9b1d703f9bef2be
MD5 7650e01fe850dbbe52ed48d62e7bd91e
BLAKE2b-256 cb8f81900cc893e0c9eddda44b41c601dc07df8f0d64c2d1bd847de37776b4c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: pyballistics-1.2.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 869.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyballistics-1.2.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 370f611148f45dca968c9a83dd540d0e01ca1866ae993ecaecc5d90c0cae2bff
MD5 299948c8668246994384d857618116cc
BLAKE2b-256 6ccbd9f80d5d53377c960fa6ac1475d16551f6336242f8f566ddaa32cc08fa24

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp312-cp312-win32.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04059e865a3701c24193db884ebfd40a3094cd606fcb9918ff3cd65bf20ceaa4
MD5 dc4ca883706e76d2030d720f93af3817
BLAKE2b-256 b75b7d1c0397bcf4616be152abb0f7b1c577677ea6ecd67a8fc89b9d05a51299

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a21a1ef4dcd161b8bdbf7d295368c058129e7549b633896e6d7d50203b61d30c
MD5 7783cfa675ffb3d861c028ca19f64cae
BLAKE2b-256 56b075ea9f22378435f4089b1b1738dca28d375617ace3de7abc6aadbc683247

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04d37a2b58b78d9461dd08ea000109ff4ab9501018d4edcddee2b3df8e2bdff7
MD5 0678ba90ff402a22e6b5fbe24afc37d7
BLAKE2b-256 d4d835e8eb1bfa0a595d6708b974945c32e1690f9262849bbe70a3c18094db15

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b1b2d9534d1239c280ef5587469104be45f82c21fabb7a9c18647e4e3d90ed02
MD5 a6e75a11a5d1c7a65f49c2749d439d00
BLAKE2b-256 2744dd918b05a379e5952633a809d967773c85deca1f840567b0ebd148223d7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: pyballistics-1.2.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 873.6 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyballistics-1.2.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 888168f5e93df43a04d5cf8c5a4bdb2066bcc68363d2b5b52df986c687dd17c4
MD5 9971f2a5d2847b5646e47c47e0ab707c
BLAKE2b-256 2d9b9b8c512ea475aefdda916e81e1d70d8909cbcba98b528860fb42fcfdad14

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp311-cp311-win32.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e441c1197fc6b01236834a741c42f6fd4ec01ca0ff79144829cbb228f755c2c2
MD5 ff58dd8de441552c8bc3aef4feba0542
BLAKE2b-256 82924366ddb153c0ab9a15d328ec1079c0fae9133ad7f6bdda7bcec7530c953a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a4ab14f24a6d764ebab01a0dc29b8ba321a09cb56ad7c0b34685f9d33bb07cd
MD5 f0d8b36671d2cdcd0412492335205a65
BLAKE2b-256 1b8d01caf3ee8b2bfe73290e6616a1fa5a1c040f6012ef16f7c17cc4ee43bb00

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4919c81cf44c11de3ee72601a2e10e2137f300a0cd8716d27bd1878201f3603b
MD5 a2b765a7b2272184be7d68c399e68e9f
BLAKE2b-256 d939eb21d726fe7c9ac22467cd811a94b81b111ddb2e85f89a678254461ace15

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 048d8a15d49ec20b9647de52603075c9280aa066194e1580f62dab2a26ebbebe
MD5 b87c6cd0fe26028a7fa9c7850f2d0d45
BLAKE2b-256 8eb9e958554dc2f1f1dc71977f326c1b2df6c0f50d499843737cb138610be9cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: pyballistics-1.2.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 875.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyballistics-1.2.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2a72f540a5c298d8a50dffd77e587f8788eff40c93dfee0744e9789d9930d734
MD5 3753eedb0813e9355715a3385b79e7d0
BLAKE2b-256 ba2ac114b8a83a200e3739de75a75b6ca2c7134001583c46caab59dbb580567a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp310-cp310-win32.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3793bcad52e6fb071c8f2fc63e6b5eba1fe7703a6ce108df5a85cbe83a75fc1f
MD5 dd89618d10ad0eff6f42c7a8aabff29d
BLAKE2b-256 63a3f830ecabb260a9e746f5d8b1b64f2a98b418c530c2befebdd2771db2288c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 199c4960878e19037302c14c31523ebf1109d4a4b6d369d71046d05902008db2
MD5 7134c9e671f77bc9e277489f503cd781
BLAKE2b-256 9b1b0da89ae86d538cb8de11ce0b97230298194e5003108f579752aec733de3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95baa4c0eaf224445864eeb1ab1b7b21a745986b6dc45155659bc759c7a2e6e4
MD5 a3c0be9eb8982b7983665c722e5080e0
BLAKE2b-256 817975c5780395dc68abe9283eb13982e53c53da38a26062884f7e2f822a737a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyballistics-1.2.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 930.7 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyballistics-1.2.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 61446eaa49565916c6de67b0cde12d3c8706d1d9a194b80448111c56cc64d14b
MD5 182b4c10f2ba19f45ac9c02096f79719
BLAKE2b-256 db5ec102f3a155cdb63de1b097dd559a866a0fc4fa7ed454b5f1e4ef0e5cc4a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp39-cp39-win32.whl.

File metadata

  • Download URL: pyballistics-1.2.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 875.9 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyballistics-1.2.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 d78f99dcb5ee8118d073ee1da33fe0b90d7e2950f2cb53b1bf50b3bea8ffe129
MD5 54881a897deca7b93b95ca21ce14a29e
BLAKE2b-256 fdda1adb27cd37a0ada7758f69a4155a0cadf6d78e8d10bcf60f2c55f25f86dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp39-cp39-win32.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a7541df76e5199cbf5c98269e445bdad9cbaae9664bba92ca648d470b7a30ade
MD5 e2ff174a0721d2f2565ce624f90528ec
BLAKE2b-256 005e449d45c464d155e65bda851b5ffda02686413a03313679b94deacf0612d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1b5fcceaf5874d77e93999f6128a39ef7dfe3d0e1d0d8daa7a6d4d40e53cb17e
MD5 5bc012051697a08697edb4682fa100c7
BLAKE2b-256 44465ea1b899368cc1fff85f46e93d643d7df1c6ca0373bb5350d4870f37aab0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyballistics-1.2.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyballistics-1.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 facd61564310d34f0124992d437f6c0c6d295d56eb745df98ad8245968bb4e04
MD5 2325a54c51a538b74b6f980e27b48688
BLAKE2b-256 269e3d93a35db2c1fbcce3a0c8db14d569d99bbbee965fadebd9486b51251038

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyballistics-1.2.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/pyballistics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page