kececilayout 0.5.6__tar.gz → 0.5.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kececilayout
3
- Version: 0.5.6
3
+ Version: 0.5.7
4
4
  Summary: Çeşitli graf kütüphaneleri için sıralı-zigzag yerleşimleri sağlayan bir Python paketi.
5
5
  Home-page: https://github.com/WhiteSymmetry/kececilayout
6
6
  Author: Mehmet Keçeci
@@ -10,7 +10,7 @@ import inspect
10
10
  import warnings
11
11
 
12
12
  # Paket sürüm numarası
13
- __version__ = "0.5.6"
13
+ __version__ = "0.5.7"
14
14
 
15
15
  # =============================================================================
16
16
  # OTOMATİK İÇE AKTARMA VE __all__ OLUŞTURMA
@@ -65,6 +65,8 @@ from .kececi_layout import ( # Veya fonksiyonların bulunduğu asıl modül
65
65
  avg_edge_length,
66
66
  _segments_intersect,
67
67
  count_edge_crossings,
68
+ generate_complete_periodic_table,
69
+ load_element_data_from_python_dict,
68
70
 
69
71
  # Drawing functions
70
72
  draw_kececi,
@@ -121,6 +123,8 @@ __all__ = [
121
123
  'avg_edge_length',
122
124
  '_segments_intersect',
123
125
  'count_edge_crossings',
126
+ 'generate_complete_periodic_table',
127
+ 'load_element_data_from_python_dict',
124
128
 
125
129
  # Drawing functions
126
130
  'draw_kececi',
@@ -177,3 +181,4 @@ def old_function_placeholder():
177
181
 
178
182
 
179
183
 
184
+
@@ -1,11 +1,9 @@
1
1
  # _version.py
2
2
 
3
- __version__ = "0.5.6"
3
+ __version__ = "0.5.7"
4
4
  __license__ = "AGPL3.0-or-later"
5
5
  __description__ = "A deterministic node placement algorithm used in graph visualization. In this layout, nodes are arranged sequentially along a defined primary axis. Each subsequent node is then alternately offset along a secondary, perpendicular axis, typically moving to one side of the primary axis and then the other. Often, the magnitude of this secondary offset increases as nodes progress along the primary axis, creating a characteristic zig-zag or serpentine pattern."
6
6
  __author__ = "Mehmet Keçeci"
7
7
  __url__ = "https://github.com/WhiteSymmetry/kececilayout"
8
8
  __docs__ = "https://github.com/WhiteSymmetry/kececilayout" # Opsiyonel: Dokümantasyon linki
9
9
  __dependencies__ = ["python>=3.11"] # Diğer bağımlılıkları da ekleyebilirsiniz
10
-
11
-
@@ -1558,29 +1558,306 @@ def _kececi_layout_3d_helix(nx_graph):
1558
1558
  def kececi_layout_3d_helix_parametric(nx_graph, z_spacing=2.0, radius=5.0, turns=2.0):
1559
1559
  """
1560
1560
  Parametric 3D helix layout for nodes. User can control spacing, radius, and number of turns.
1561
+ Fixed version with division by zero handling.
1562
+
1561
1563
  Args:
1562
1564
  nx_graph: NetworkX graph.
1563
1565
  z_spacing (float): Vertical distance between consecutive nodes.
1564
1566
  radius (float): Radius of the helix.
1565
1567
  turns (float): Number of full turns the helix makes.
1568
+
1566
1569
  Returns:
1567
1570
  dict: {node_id: (x, y, z)}
1568
1571
  """
1569
1572
  nodes = sorted(list(nx_graph.nodes()))
1570
1573
  pos_3d = {}
1571
1574
  total_nodes = len(nodes)
1575
+
1572
1576
  if total_nodes == 0:
1577
+ print(f"Warning: Graph has {total_nodes} nodes!")
1573
1578
  return pos_3d
1574
1579
 
1575
1580
  total_angle = 2 * np.pi * turns
1581
+
1576
1582
  for i, node_id in enumerate(nodes):
1577
1583
  z = i * z_spacing
1578
- angle = (i / (total_nodes - 1)) * total_angle if total_nodes > 1 else 0
1584
+
1585
+ # Division by zero fix for single node case
1586
+ if total_nodes > 1:
1587
+ angle = (i / (total_nodes - 1)) * total_angle
1588
+ else:
1589
+ angle = 0
1590
+
1579
1591
  x = np.cos(angle) * radius
1580
1592
  y = np.sin(angle) * radius
1581
1593
  pos_3d[node_id] = (x, y, z)
1594
+
1582
1595
  return pos_3d
1583
1596
 
1597
+ def load_element_data_from_python_dict(filename):
1598
+ """Loads element data from a Python dictionary format file."""
1599
+ element_data = {}
1600
+ spectral_lines = {}
1601
+
1602
+ print(f"Loading file: {filename}")
1603
+ print(f"File exists: {os.path.exists(filename)}")
1604
+
1605
+ if not os.path.exists(filename):
1606
+ print(f"ERROR: File '{filename}' not found in directory: {os.getcwd()}")
1607
+ return element_data, spectral_lines
1608
+
1609
+ try:
1610
+ with open(filename, 'r', encoding='utf-8') as f:
1611
+ content = f.read()
1612
+
1613
+ # Find element_data dictionary
1614
+ element_data_match = re.search(r'element_data\s*=\s*\{([^}]+)\}', content, re.DOTALL)
1615
+ if element_data_match:
1616
+ element_data_str = element_data_match.group(0)
1617
+ print("Found element_data dictionary")
1618
+
1619
+ # generate a safe environment to evaluate the dictionary
1620
+ safe_dict = {}
1621
+ exec(element_data_str, {"__builtins__": {}}, safe_dict)
1622
+
1623
+ if 'element_data' in safe_dict:
1624
+ element_data = safe_dict['element_data']
1625
+ print(f"Successfully loaded {len(element_data)} elements")
1626
+ else:
1627
+ print("element_data not found in evaluated content")
1628
+
1629
+ # Manual parsing as fallback
1630
+ print("Attempting manual parsing...")
1631
+ lines = element_data_str.split('\n')
1632
+ for line in lines:
1633
+ line = line.strip()
1634
+ if ':' in line and '(' in line:
1635
+ # Parse line like: 1: ("H", 1),
1636
+ match = re.search(r'(\d+):\s*\("([^"]+)",\s*(\d+)\)', line)
1637
+ if match:
1638
+ key = int(match.group(1))
1639
+ symbol = match.group(2)
1640
+ atomic_num = int(match.group(3))
1641
+ element_data[key] = (symbol, atomic_num)
1642
+
1643
+ # Find spectral_lines dictionary if exists
1644
+ spectral_match = re.search(r'spectral_lines\s*=\s*\{([^}]+)\}', content, re.DOTALL)
1645
+ if spectral_match:
1646
+ spectral_str = spectral_match.group(0)
1647
+ print("Found spectral_lines dictionary")
1648
+
1649
+ safe_dict = {}
1650
+ exec(spectral_str, {"__builtins__": {}}, safe_dict)
1651
+
1652
+ if 'spectral_lines' in safe_dict:
1653
+ spectral_lines = safe_dict['spectral_lines']
1654
+ print(f"Successfully loaded {len(spectral_lines)} spectral lines")
1655
+
1656
+ # If no dictionaries found, try simple CSV format
1657
+ if not element_data:
1658
+ print("No dictionaries found, trying CSV format...")
1659
+ lines = content.split('\n')
1660
+ current_section = None
1661
+
1662
+ for line in lines:
1663
+ line = line.strip()
1664
+ if not line or line.startswith('#'):
1665
+ if "element" in line.lower():
1666
+ current_section = "element"
1667
+ elif "spectral" in line.lower():
1668
+ current_section = "spectral"
1669
+ continue
1670
+
1671
+ parts = [p.strip() for p in line.split(',')]
1672
+ if current_section == "element" and len(parts) >= 2:
1673
+ try:
1674
+ symbol = parts[0]
1675
+ atomic_number = int(parts[1])
1676
+ element_data[atomic_number] = (symbol, atomic_number)
1677
+ except:
1678
+ continue
1679
+ elif current_section == "spectral" and len(parts) >= 2:
1680
+ symbol = parts[0]
1681
+ wavelengths = []
1682
+ for wl in parts[1:]:
1683
+ if wl:
1684
+ try:
1685
+ wavelengths.append(float(wl))
1686
+ except:
1687
+ continue
1688
+ if wavelengths:
1689
+ spectral_lines[symbol] = wavelengths
1690
+
1691
+ except Exception as e:
1692
+ print(f"Error reading/parsing file: {str(e)}")
1693
+ import traceback
1694
+ traceback.print_exc()
1695
+
1696
+ print(f"\nTotal elements loaded: {len(element_data)}")
1697
+ print(f"Total spectral lines loaded: {len(spectral_lines)}")
1698
+
1699
+ if element_data:
1700
+ print("\nFirst 10 elements:")
1701
+ for i, (key, val) in enumerate(list(element_data.items())[:10]):
1702
+ print(f" {key}: {val}")
1703
+
1704
+ return element_data, spectral_lines
1705
+
1706
+ def generate_complete_periodic_table():
1707
+ """generate a complete periodic table with all 118 elements."""
1708
+ print("Creating complete periodic table...")
1709
+
1710
+ periodic_elements = {
1711
+ 1: ('H', 1), 2: ('He', 2), 3: ('Li', 3), 4: ('Be', 4), 5: ('B', 5),
1712
+ 6: ('C', 6), 7: ('N', 7), 8: ('O', 8), 9: ('F', 9), 10: ('Ne', 10),
1713
+ 11: ('Na', 11), 12: ('Mg', 12), 13: ('Al', 13), 14: ('Si', 14), 15: ('P', 15),
1714
+ 16: ('S', 16), 17: ('Cl', 17), 18: ('Ar', 18), 19: ('K', 19), 20: ('Ca', 20),
1715
+ 21: ('Sc', 21), 22: ('Ti', 22), 23: ('V', 23), 24: ('Cr', 24), 25: ('Mn', 25),
1716
+ 26: ('Fe', 26), 27: ('Co', 27), 28: ('Ni', 28), 29: ('Cu', 29), 30: ('Zn', 30),
1717
+ 31: ('Ga', 31), 32: ('Ge', 32), 33: ('As', 33), 34: ('Se', 34), 35: ('Br', 35),
1718
+ 36: ('Kr', 36), 37: ('Rb', 37), 38: ('Sr', 38), 39: ('Y', 39), 40: ('Zr', 40),
1719
+ 41: ('Nb', 41), 42: ('Mo', 42), 43: ('Tc', 43), 44: ('Ru', 44), 45: ('Rh', 45),
1720
+ 46: ('Pd', 46), 47: ('Ag', 47), 48: ('Cd', 48), 49: ('In', 49), 50: ('Sn', 50),
1721
+ 51: ('Sb', 51), 52: ('Te', 52), 53: ('I', 53), 54: ('Xe', 54), 55: ('Cs', 55),
1722
+ 56: ('Ba', 56), 57: ('La', 57), 58: ('Ce', 58), 59: ('Pr', 59), 60: ('Nd', 60),
1723
+ 61: ('Pm', 61), 62: ('Sm', 62), 63: ('Eu', 63), 64: ('Gd', 64), 65: ('Tb', 65),
1724
+ 66: ('Dy', 66), 67: ('Ho', 67), 68: ('Er', 68), 69: ('Tm', 69), 70: ('Yb', 70),
1725
+ 71: ('Lu', 71), 72: ('Hf', 72), 73: ('Ta', 73), 74: ('W', 74), 75: ('Re', 75),
1726
+ 76: ('Os', 76), 77: ('Ir', 77), 78: ('Pt', 78), 79: ('Au', 79), 80: ('Hg', 80),
1727
+ 81: ('Tl', 81), 82: ('Pb', 82), 83: ('Bi', 83), 84: ('Po', 84), 85: ('At', 85),
1728
+ 86: ('Rn', 86), 87: ('Fr', 87), 88: ('Ra', 88), 89: ('Ac', 89), 90: ('Th', 90),
1729
+ 91: ('Pa', 91), 92: ('U', 92), 93: ('Np', 93), 94: ('Pu', 94), 95: ('Am', 95),
1730
+ 96: ('Cm', 96), 97: ('Bk', 97), 98: ('Cf', 98), 99: ('Es', 99), 100: ('Fm', 100),
1731
+ 101: ('Md', 101), 102: ('No', 102), 103: ('Lr', 103), 104: ('Rf', 104), 105: ('Db', 105),
1732
+ 106: ('Sg', 106), 107: ('Bh', 107), 108: ('Hs', 108), 109: ('Mt', 109), 110: ('Ds', 110),
1733
+ 111: ('Rg', 111), 112: ('Cn', 112), 113: ('Nh', 113), 114: ('Fl', 114), 115: ('Mc', 115),
1734
+ 116: ('Lv', 116), 117: ('Ts', 117), 118: ('Og', 118)
1735
+ }
1736
+
1737
+ # Sample spectral lines for common elements
1738
+ spectral_lines = {
1739
+ 'H': [656.3, 486.1, 434.0, 410.2], # Balmer serisi (H-α, H-β, H-γ, H-δ)
1740
+ 'He': [587.6, 447.1, 388.9, 402.6], # He I çizgileri (Sarı, Mavi, Mor)
1741
+ 'Li': [670.8, 610.4], # Lityum çift çizgisi (Kırmızı)
1742
+ 'Be': [313.1, 313.0], # Berilyum UV çizgileri (Yakın UV)
1743
+ 'B': [249.7, 249.6], # Bor UV çizgileri
1744
+ 'C': [426.7, 505.2, 514.5], # Nötr Karbon (C I) çizgileri
1745
+ 'N': [346.6, 357.7, 746.8], # Nötr Azot (N I) çizgileri
1746
+ 'O': [777.4, 777.2, 777.5, 844.6], # Nötr Oksijen (O I) triplet ve singlet
1747
+ 'F': [685.6, 739.9], # Flor çizgileri
1748
+ 'Ne': [540.1, 585.2, 588.2], # Neon çizgileri (Yeşil-Sarı)
1749
+ 'Na': [589.0, 589.6], # Sodyum D-çifti (Çok belirgin sarı çizgiler)
1750
+ 'Mg': [517.3, 518.4, 457.1], # Magnezyum triplet (Yeşil) ve UV çizgisi
1751
+ 'Al': [396.1, 394.4], # Alüminyum çizgileri (Mor)
1752
+ 'Si': [390.5, 410.7, 504.1], # Silisyum çizgileri
1753
+ 'P': [515.3, 516.7], # Fosfor çizgileri
1754
+ 'S': [560.6, 564.0, 869.4], # Kükürt çizgileri
1755
+ 'Cl': [837.6, 841.8], # Klor çizgileri (Kırmızı)
1756
+ 'Ar': [750.4, 763.5], # Argon çizgileri
1757
+ 'K': [766.5, 769.9], # Potasyum çift çizgisi (Kırmızı)
1758
+ 'Ca': [393.4, 396.8, 422.7], # Kalsiyum H, K çizgileri (Çok belirgin mor) ve IR çizgisi
1759
+ 'Sc': [424.7, 431.9], # Skandiyum çizgileri
1760
+ 'Ti': [498.2, 520.2, 533.7], # Titanyum çizgileri
1761
+ 'V': [430.5, 437.9], # Vanadyum çizgileri
1762
+ 'Cr': [425.4, 427.5, 428.9], # Krom çizgileri
1763
+ 'Mn': [403.1, 403.5, 475.4], # Manganez çizgileri
1764
+ 'Fe': [438.3, 430.8, 427.2, 527.0], # Demir çizgileri (Fe I - çok sayıda çizgi var, en belirginler)
1765
+ 'Co': [412.1, 411.9], # Kobalt çizgileri
1766
+ 'Ni': [380.7, 385.7], # Nikel çizgileri
1767
+ 'Cu': [510.6, 578.2], # Bakır çizgileri
1768
+ 'Zn': [468.0, 472.2], # Çinko çizgileri
1769
+ 'Ga': [417.2, 403.3], # Galyum çizgileri
1770
+ 'Ge': [422.7, 465.6], # Germanyum çizgileri
1771
+ 'As': [488.9, 514.6], # Arsenik çizgileri
1772
+ 'Se': [479.6, 486.9], # Selenyum çizgileri
1773
+ 'Br': [482.5, 515.8], # Brom çizgileri
1774
+ 'Kr': [557.0, 587.1], # Kripton çizgileri
1775
+ 'Rb': [780.0, 794.8], # Rubidyum çizgileri (Kırmızı)
1776
+ 'Sr': [460.7, 421.6], # Stronsiyum çizgileri
1777
+ 'Y': [488.4, 490.0], # İtriyum çizgileri
1778
+ 'Zr': [468.8, 473.6], # Zirkonyum çizgileri
1779
+ 'Nb': [478.7, 488.6], # Niobyum çizgileri
1780
+ 'Mo': [478.5, 480.9], # Molibden çizgileri
1781
+ 'Tc': [426.2, 429.6], # Teknesyum (radyoaktif, teorik)
1782
+ 'Ru': [449.9, 451.3], # Rutenyum çizgileri
1783
+ 'Rh': [450.4, 452.2], # Rodiyum çizgileri
1784
+ 'Pd': [468.3, 474.9], # Paladyum çizgileri
1785
+ 'Ag': [497.6, 507.6], # Gümüş çizgileri
1786
+ 'Cd': [508.6, 643.8], # Kadmiyum çizgileri
1787
+ 'In': [451.1, 410.2], # İndiyum çizgileri
1788
+ 'Sn': [452.5, 462.4], # Kalay çizgileri
1789
+ 'Sb': [451.4, 459.3], # Antimon çizgileri
1790
+ 'Te': [460.2, 476.2], # Tellür çizgileri
1791
+ 'I': [576.5, 579.3], # İyot çizgileri
1792
+ 'Xe': [467.1, 473.4], # Xenon çizgileri
1793
+ 'Cs': [852.1, 894.3], # Sezyum çizgileri (Kırmızı-IR)
1794
+ 'Ba': [455.4, 493.4], # Baryum çizgileri
1795
+ 'La': [463.6, 474.8], # Lantan çizgileri
1796
+ 'Ce': [456.2, 458.2], # Seryum çizgileri
1797
+ 'Pr': [448.8, 451.0], # Praseodimyum çizgileri
1798
+ 'Nd': [451.5, 456.2], # Neodimyum çizgileri
1799
+ 'Pm': [446.0, 450.7], # Prometyum (radyoaktif, teorik)
1800
+ 'Sm': [442.4, 446.5], # Samaryum çizgileri
1801
+ 'Eu': [459.4, 462.7], # Avrupyum çizgileri
1802
+ 'Gd': [455.9, 459.4], # Gadolinyum çizgileri
1803
+ 'Tb': [455.8, 458.2], # Terbiyum çizgileri
1804
+ 'Dy': [455.6, 458.0], # Disprozyum çizgileri
1805
+ 'Ho': [455.5, 458.0], # Holmiyum çizgileri
1806
+ 'Er': [455.4, 457.9], # Erbiyum çizgileri
1807
+ 'Tm': [455.3, 457.7], # Tulyum çizgileri
1808
+ 'Yb': [455.2, 457.6], # İterbiyum çizgileri
1809
+ 'Lu': [455.1, 457.5], # Lutesyum çizgileri
1810
+ 'Hf': [460.5, 462.9], # Hafniyum çizgileri
1811
+ 'Ta': [457.8, 460.2], # Tantal çizgileri
1812
+ 'W': [460.2, 462.6], # Volfram çizgileri
1813
+ 'Re': [460.0, 462.4], # Renyum çizgileri
1814
+ 'Os': [459.8, 462.2], # Osmiyum çizgileri
1815
+ 'Ir': [459.6, 462.0], # İridyum çizgileri
1816
+ 'Pt': [459.4, 461.8], # Platin çizgileri
1817
+ 'Au': [479.3, 494.6], # Altın çizgileri
1818
+ 'Hg': [435.8, 546.1], # Cıva çizgileri (Mavi-Yeşil)
1819
+ 'Tl': [535.0, 537.6], # Talyum çizgileri
1820
+ 'Pb': [405.8, 436.3], # Kurşun çizgileri
1821
+ 'Bi': [472.2, 474.8], # Bizmut çizgileri
1822
+ 'Po': [453.5, 456.0], # Polonyum (radyoaktif, teorik)
1823
+ 'At': [452.0, 454.5], # Astatin (radyoaktif, teorik)
1824
+ 'Rn': [451.0, 453.5], # Radon (radyoaktif, teorik)
1825
+ 'Fr': [450.0, 452.5], # Fransiyum (radyoaktif, teorik)
1826
+ 'Ra': [449.0, 451.5], # Radyum (radyoaktif, teorik)
1827
+ 'Ac': [448.0, 450.5], # Aktinyum çizgileri
1828
+ 'Th': [401.9, 409.5], # Toryum çizgileri
1829
+ 'Pa': [451.2, 453.7], # Protaktinyum (radyoaktif, teorik)
1830
+ 'U': [424.4, 424.2], # Uranyum çizgileri
1831
+ 'Np': [450.0, 452.5], # Neptünyum (radyoaktif, teorik)
1832
+ 'Pu': [449.0, 451.5], # Plütonyum (radyoaktif, teorik)
1833
+ 'Am': [448.0, 450.5], # Amerikyum (radyoaktif, teorik)
1834
+ 'Cm': [447.0, 449.5], # Küriyum (radyoaktif, teorik)
1835
+ 'Bk': [446.0, 448.5], # Berkelyum (radyoaktif, teorik)
1836
+ 'Cf': [445.0, 447.5], # Kaliforniyum (radyoaktif, teorik)
1837
+ 'Es': [444.0, 446.5], # Aynştaynyum (radyoaktif, teorik)
1838
+ 'Fm': [443.0, 445.5], # Fermiyum (radyoaktif, teorik)
1839
+ 'Md': [442.0, 444.5], # Mendelevyum (radyoaktif, teorik)
1840
+ 'No': [441.0, 443.5], # Nobelyum (radyoaktif, teorik)
1841
+ 'Lr': [440.0, 442.5], # Lavrensiyum (radyoaktif, teorik)
1842
+ 'Rf': [439.0, 441.5], # Rutherfordiyum (teorik)
1843
+ 'Db': [438.0, 440.5], # Dubniyum (teorik)
1844
+ 'Sg': [437.0, 439.5], # Seaborgiyum (teorik)
1845
+ 'Bh': [436.0, 438.5], # Bohriyum (teorik)
1846
+ 'Hs': [435.0, 437.5], # Hassiyum (teorik)
1847
+ 'Mt': [434.0, 436.5], # Meitneriyum (teorik)
1848
+ 'Ds': [433.0, 435.5], # Darmstadtium (teorik)
1849
+ 'Rg': [432.0, 434.5], # Roentgenyum (teorik)
1850
+ 'Cn': [431.0, 433.5], # Kopernikyum (teorik)
1851
+ 'Nh': [430.0, 432.5], # Nihonyum (teorik)
1852
+ 'Fl': [429.0, 431.5], # Flerovyum (teorik)
1853
+ 'Mc': [428.0, 430.5], # Moskovyum (teorik)
1854
+ 'Lv': [427.0, 429.5], # Livermorium (teorik)
1855
+ 'Ts': [426.0, 428.5], # Tennessin (teorik)
1856
+ 'Og': [425.0, 427.5], # Oganesson (teorik)
1857
+ }
1858
+
1859
+ return periodic_elements, spectral_lines
1860
+
1584
1861
  def load_element_data_and_spectral_lines(filename):
1585
1862
  """Loads element data and spectral lines from a text file."""
1586
1863
  element_data = {}
@@ -1654,12 +1931,11 @@ def generate_soft_random_colors(n):
1654
1931
  """
1655
1932
  colors = []
1656
1933
  for _ in range(n):
1657
- # Tamamen rastgele ton (hue)
1658
- hue = random.random() # 0.0 - 1.0 arası
1934
+ hue = random.random()
1659
1935
  # Soft görünüm için doygunluk (saturation) orta seviyede
1660
- saturation = 0.4 + (random.random() * 0.4) # 0.4 - 0.8 arası
1936
+ saturation = 0.4 + (random.random() * 0.4)
1661
1937
  # Soft görünüm için parlaklık (value) yüksek
1662
- value = 0.7 + (random.random() * 0.3) # 0.7 - 1.0 arası
1938
+ value = 0.7 + (random.random() * 0.3)
1663
1939
  from matplotlib.colors import hsv_to_rgb
1664
1940
  rgb = hsv_to_rgb([hue, saturation, value])
1665
1941
  colors.append(rgb)
@@ -2265,3 +2541,4 @@ if __name__ == '__main__':
2265
2541
 
2266
2542
 
2267
2543
 
2544
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kececilayout
3
- Version: 0.5.6
3
+ Version: 0.5.7
4
4
  Summary: Çeşitli graf kütüphaneleri için sıralı-zigzag yerleşimleri sağlayan bir Python paketi.
5
5
  Home-page: https://github.com/WhiteSymmetry/kececilayout
6
6
  Author: Mehmet Keçeci
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "kececilayout"
9
- version = "0.5.6"
9
+ version = "0.5.7"
10
10
 
11
11
  # Diğer proje bilgileri (isteğe bağlı ama tavsiye edilir)
12
12
  authors = [
@@ -78,3 +78,4 @@ configuration = "docs/conf.py" # Build konfigürasyonu belirtin
78
78
 
79
79
 
80
80
 
81
+
@@ -0,0 +1,24 @@
1
+ [tox:tox]
2
+ requires =
3
+ tox >= 4.0
4
+ env_list =
5
+ 3.15
6
+ 3.14t
7
+ 3.14
8
+ 3.13
9
+ 3.12
10
+ 3.11
11
+ type
12
+
13
+ [testenv]
14
+ deps = pytest
15
+ commands = pytest tests
16
+
17
+ [testenv:type]
18
+ deps = mypy
19
+ commands = mypy src
20
+
21
+ [egg_info]
22
+ tag_build =
23
+ tag_date = 0
24
+
@@ -1,4 +0,0 @@
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