fnschool 20251013.81959.843__py3-none-any.whl → 20251014.81348.830__py3-none-any.whl

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.
Files changed (23) hide show
  1. fnschoo1/__init__.py +1 -1
  2. fnschoo1/canteen/forms.py +10 -0
  3. fnschoo1/canteen/migrations/0014_category_priority.py +27 -0
  4. fnschoo1/canteen/migrations/0015_alter_category_options_alter_category_priority.py +28 -0
  5. fnschoo1/canteen/models.py +29 -7
  6. fnschoo1/canteen/templates/canteen/category/delete.html +4 -0
  7. fnschoo1/canteen/templates/canteen/category/list.html +2 -0
  8. fnschoo1/canteen/templates/canteen/consumption/create.html +1 -1
  9. fnschoo1/canteen/views.py +0 -1
  10. fnschoo1/canteen/workbook/generate.py +13 -0
  11. fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  12. fnschoo1/static/js/fnschool.js +2 -4
  13. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/METADATA +1 -1
  14. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/RECORD +23 -21
  15. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/SOURCES.txt.py +0 -0
  16. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/WHEEL +0 -0
  17. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/dependency_links.txt.py +0 -0
  18. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/entry_points.txt +0 -0
  19. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/entry_points.txt.py +0 -0
  20. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/licenses/LICENSE +0 -0
  21. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/requires.txt.py +0 -0
  22. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/top_level.txt +0 -0
  23. {fnschool-20251013.81959.843.dist-info → fnschool-20251014.81348.830.dist-info}/top_level.txt.py +0 -0
fnschoo1/__init__.py CHANGED
@@ -6,4 +6,4 @@ import random
6
6
  import sys
7
7
  from pathlib import Path
8
8
 
9
- __version__ = "20251013.81959.843"
9
+ __version__ = "20251014.81348.830"
fnschoo1/canteen/forms.py CHANGED
@@ -70,9 +70,19 @@ class CategoryForm(forms.ModelForm):
70
70
  fields = [
71
71
  "name",
72
72
  "abbreviation",
73
+ "priority",
73
74
  "pin_to_consumptions_top",
74
75
  "is_disabled",
75
76
  ]
77
+ widgets = {
78
+ "priority": forms.NumberInput(
79
+ attrs={
80
+ "title": _(
81
+ "Numbers with smaller values have higher priority."
82
+ ),
83
+ },
84
+ ),
85
+ }
76
86
 
77
87
 
78
88
  class MealTypeForm(forms.ModelForm):
@@ -0,0 +1,27 @@
1
+ # Generated by Django 4.2.25 on 2025-10-14 04:46
2
+
3
+ import django.core.validators
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ (
11
+ "canteen",
12
+ "0013_alter_consumption_options_alter_ingredient_options_and_more",
13
+ ),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.AddField(
18
+ model_name="category",
19
+ name="priority",
20
+ field=models.IntegerField(
21
+ blank=True,
22
+ null=True,
23
+ validators=[django.core.validators.MinValueValidator(0)],
24
+ verbose_name="Category Priority",
25
+ ),
26
+ ),
27
+ ]
@@ -0,0 +1,28 @@
1
+ # Generated by Django 4.2.25 on 2025-10-14 05:48
2
+
3
+ import django.core.validators
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("canteen", "0014_category_priority"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterModelOptions(
15
+ name="category",
16
+ options={"ordering": ["priority"]},
17
+ ),
18
+ migrations.AlterField(
19
+ model_name="category",
20
+ name="priority",
21
+ field=models.IntegerField(
22
+ blank=True,
23
+ null=True,
24
+ validators=[django.core.validators.MinValueValidator(0)],
25
+ verbose_name="优先级",
26
+ ),
27
+ ),
28
+ ]
@@ -45,10 +45,22 @@ class Category(models.Model):
45
45
  is_disabled = models.BooleanField(
46
46
  default=False, verbose_name=_("Is Disabled")
47
47
  )
48
+ priority = models.IntegerField(
49
+ null=True,
50
+ blank=True,
51
+ validators=[
52
+ MinValueValidator(0),
53
+ ],
54
+ verbose_name=_("Category Priority"),
55
+ )
56
+
48
57
  pin_to_consumptions_top = models.BooleanField(
49
58
  default=False, verbose_name=_("Pin to Consumptions Top")
50
59
  )
51
60
 
61
+ class Meta:
62
+ ordering = ["priority"]
63
+
52
64
  def __str__(self):
53
65
  return self.name
54
66
 
@@ -110,12 +122,6 @@ class Ingredient(models.Model):
110
122
  @property
111
123
  def cleaned_consumptions(self):
112
124
  consumptions = self.consumptions.all()
113
- for c1 in consumptions:
114
- for c2 in consumptions:
115
- if c1.date_of_using == c2.date_of_using and c1.id != c2.id:
116
- c1.is_disabled = False
117
- c1.save()
118
- c2.delete()
119
125
  return consumptions
120
126
 
121
127
  @property
@@ -128,6 +134,22 @@ class Ingredient(models.Model):
128
134
  )
129
135
  return quantity
130
136
 
137
+ def get_consuming_quantity(self, date_end):
138
+ consumptions = self.cleaned_consumptions
139
+ if not consumptions:
140
+ return 0
141
+ quantity = sum(
142
+ [
143
+ c.amount_used
144
+ for c in consumptions
145
+ if not c.is_disabled and c.date_of_using <= date_end
146
+ ]
147
+ )
148
+ return quantity
149
+
150
+ def get_remaining_quantity(self, date_end):
151
+ return self.quantity - self.get_consuming_quantity(date_end)
152
+
131
153
  @property
132
154
  def remaining_quantity(self):
133
155
  consumptions = self.cleaned_consumptions
@@ -156,7 +178,7 @@ class Consumption(models.Model):
156
178
 
157
179
  date_of_using = models.DateField(verbose_name=_("Date"))
158
180
  amount_used = models.IntegerField(
159
- verbose_name="消耗数量",
181
+ verbose_name=_("Consuming Quantity"),
160
182
  validators=[MinValueValidator(0)],
161
183
  )
162
184
  is_disabled = models.BooleanField(
@@ -21,6 +21,10 @@
21
21
  <dd>
22
22
  {{ category.created_at }}
23
23
  </dd>
24
+ <dt>{% trans 'Priority' %}</dt>
25
+ <dd>
26
+ {{ category.priority }}
27
+ </dd>
24
28
  <dt>{% trans 'Pin to consumptions top' %}</dt>
25
29
  <dd>
26
30
  {% if category.pin_to_consumptions_top %}
@@ -18,6 +18,7 @@
18
18
  <th>{% trans "Abbreviation" %}</th>
19
19
  <th>{% trans "Created at" %}</th>
20
20
  <th>{% trans "Pin to consumptions top" %}</th>
21
+ <th>{% trans "Priority" %}</th>
21
22
  <th>{% trans "Is Disabled" %}</th>
22
23
  <th>#</th>
23
24
  </tr>
@@ -34,6 +35,7 @@
34
35
  {% trans "Yes" %}
35
36
  {% endif %}
36
37
  </td>
38
+ <td>{{ category.priority|default_if_none:'0' }}</td>
37
39
  <td>
38
40
  {% if category.is_disabled %}
39
41
  {% trans "Yes" %}
@@ -30,7 +30,7 @@
30
30
  <input class="form-control "
31
31
  onkeydown="if(event.keyCode==13){list_consumptions();}"
32
32
  title="{% trans 'The end date of storage.' %}"
33
- id="storage_date_end"
33
+ id="storage_date_end_input"
34
34
  value="{{ request.COOKIES.storage_date_end }}">
35
35
  </input>
36
36
  </div>
fnschoo1/canteen/views.py CHANGED
@@ -784,7 +784,6 @@ class CategoryListView(LoginRequiredMixin, ListView):
784
784
  model = Category
785
785
  template_name = "canteen/category/list.html"
786
786
  context_object_name = "categories"
787
- ordering = ["-created_at"]
788
787
 
789
788
  paginate_by = 10
790
789
  paginate_orphans = 2
@@ -2106,6 +2106,19 @@ class CanteenWorkBook:
2106
2106
  ]:
2107
2107
  set_column_width_in_inches(sheet, col, width)
2108
2108
 
2109
+ def fill_in_food_sheets(self):
2110
+ user = self.request.user
2111
+ date_start = self.date_start
2112
+ date_end = self.date_end
2113
+ meal_type = self.meal_type
2114
+
2115
+ ingredients = Ingredient.objects.filter(
2116
+ Q(is_disabled=False)
2117
+ & Q(is_ignorable=False)
2118
+ & Q(user=user)
2119
+ & Q(meal_type=meal_type)
2120
+ ).all()
2121
+
2109
2122
  def fill_in(self):
2110
2123
  self.fill_in_cover_sheet()
2111
2124
  self.fill_in_storage_sheet()
@@ -9,9 +9,7 @@ function get_cookie(name) {
9
9
  return null
10
10
  }
11
11
  function delete_cookie(name) {
12
- document.cookie =
13
- name +
14
- `=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=${window.location.pathname}`
12
+ document.cookie = name + `=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`
15
13
  }
16
14
 
17
15
  function set_cookies(cookies) {
@@ -28,7 +26,7 @@ function set_simple_cookie(key, value) {
28
26
  }
29
27
  const expiryDate = new Date()
30
28
  expiryDate.setFullYear(expiryDate.getFullYear() + 20)
31
- document.cookie = `${key}=${value}; expires=${expiryDate.toUTCString()}; path=${window.location.pathname}`
29
+ document.cookie = `${key}=${value}; expires=${expiryDate.toUTCString()}; path=/`
32
30
  }
33
31
  function update_href(query) {
34
32
  query = new Map(Object.entries(query))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fnschool
3
- Version: 20251013.81959.843
3
+ Version: 20251014.81348.830
4
4
  Summary: Just some school related scripts, without any ambition.
5
5
  Author-email: larryw3i <larryw3i@163.com>, Larry Wei <larryw3i@126.com>, Larry W3i <larryw3i@yeah.net>
6
6
  Maintainer-email: larryw3i <larryw3i@163.com>, Larry Wei <larryw3i@126.com>
@@ -1,13 +1,13 @@
1
- fnschoo1/__init__.py,sha256=P5QYmb7ozN6bO6SBiWzHKv5mAxye_K2A3X_5bGBmfXc,197
1
+ fnschoo1/__init__.py,sha256=DqSX-bt_bz0BZ-kysbkSLYxAUXL5o08jka2CGFxXo4Y,197
2
2
  fnschoo1/manage.py,sha256=Cr5OtPrRWfEc7KEjW4yYnMKj_qlb0-qpwFRz3vFXvC0,1565
3
3
  fnschoo1/canteen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  fnschoo1/canteen/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
5
5
  fnschoo1/canteen/apps.py,sha256=zUjM0ZJwHW4i72vOm87QewRlvFQORQo5yb053u4YIGs,146
6
- fnschoo1/canteen/forms.py,sha256=4Y75VHpnONdN5hM8aShyr7tbQSElLa-22PQK7fDRflw,2296
7
- fnschoo1/canteen/models.py,sha256=20r24iNJW0hmPwhY96pQLYaIgqf8kc_Tx76IqORR_LE,5219
6
+ fnschoo1/canteen/forms.py,sha256=PDPAzZZ_y533KtMxCixLXXsXok5gjUShCSXeonYgGqQ,2582
7
+ fnschoo1/canteen/models.py,sha256=a4dCdTAcWu84D6PP8CWCSsAF4Q6ZMo74eDluwOmH_R8,5710
8
8
  fnschoo1/canteen/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
9
9
  fnschoo1/canteen/urls.py,sha256=4GtrqC9L59c8zopfjRgqhbcvA5iPnGcAUVuM6CrKWpk,2797
10
- fnschoo1/canteen/views.py,sha256=AXMO6dEMjBMTO-D6sWEV2sDwYZcms0L6hSgq8NHvVfw,26315
10
+ fnschoo1/canteen/views.py,sha256=DGrbOZuU0XuMuTnldFrHpRsm-spYuBHZMzBQq3z_iC0,26284
11
11
  fnschoo1/canteen/migrations/0001_initial.py,sha256=IHlyfT9sNc-kRQZy7NyjgWzp4EGus405QCAUw4oNdAQ,3943
12
12
  fnschoo1/canteen/migrations/0002_ingredient_is_disabled.py,sha256=j8oGWb2b99YwsEk-uwESLA_JRITEcz6b35ekoYOUGGc,444
13
13
  fnschoo1/canteen/migrations/0003_consumption_is_disabled_alter_ingredient_is_disabled.py,sha256=9RB5SHjINgrrqtDpcVIUXEBa3C_MTcR_keXLGG_PcOs,619
@@ -21,14 +21,16 @@ fnschoo1/canteen/migrations/0010_alter_consumption_options_alter_ingredient_opti
21
21
  fnschoo1/canteen/migrations/0011_category_pin_to_consumptions_top.py,sha256=gonvx7T23KlesYUGFx-WTvkz1BLZSnq0n62qKvtWnUo,553
22
22
  fnschoo1/canteen/migrations/0012_alter_ingredient_storage_date.py,sha256=JvU9xrAbGN8uoKHQw00wq6U4CaR_6WojQo-8VwmID3I,436
23
23
  fnschoo1/canteen/migrations/0013_alter_consumption_options_alter_ingredient_options_and_more.py,sha256=hKwsEJ_a1ezANJSrQoca2wEy22AZESwhqH9eonNfOm8,6735
24
+ fnschoo1/canteen/migrations/0014_category_priority.py,sha256=AywjPQhwtwm8xttEEOGQ3yyQ8j890hL5J-wCUNEwbkE,677
25
+ fnschoo1/canteen/migrations/0015_alter_category_options_alter_category_priority.py,sha256=l8WVVTaDDbB3-xBMdU402gsQo3mhfeUUEcIp_hYVEPk,720
24
26
  fnschoo1/canteen/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
27
  fnschoo1/canteen/templates/canteen/close.html,sha256=pLYeJmGaOEJKMUJdZmYzz_n--l28IRDQ4fXvetP_Vsc,200
26
28
  fnschoo1/canteen/templates/canteen/category/create.html,sha256=7Hq62BqEpamDt52_Ut7DTO74_3yEn8_CqXH4e4va6dY,593
27
- fnschoo1/canteen/templates/canteen/category/delete.html,sha256=MnPyFzjO3HonOljwxGf6r1UzmbFjow7VT6h7YGkxxfk,1709
28
- fnschoo1/canteen/templates/canteen/category/list.html,sha256=aj81uoA-jmdv8mZT-Y9DxjOHVGrSfI1z0DB1YnJWb4w,2045
29
+ fnschoo1/canteen/templates/canteen/category/delete.html,sha256=gkEg3oiIbjVsZMKEywkAeXtb21oHTofi8cOER4dW6cc,1802
30
+ fnschoo1/canteen/templates/canteen/category/list.html,sha256=QLO2GA13Co48Ijd0DCCN4lcMm1fgJqT2CprH5VdLZPw,2148
29
31
  fnschoo1/canteen/templates/canteen/category/update.html,sha256=8Nzdbe8UorrJHzElkrdqvLaPnUvcvGhrViZB4D86wqo,815
30
32
  fnschoo1/canteen/templates/canteen/consumption/_create.html,sha256=lpST1R0vL1PEI1YE9d0-bcWWpCMH-INjIF-7pweAHuU,1008
31
- fnschoo1/canteen/templates/canteen/consumption/create.html,sha256=NOUKb48EueRHHN3tb1KwTkCsmpWwdWWCwX3Kwqi-A7o,15954
33
+ fnschoo1/canteen/templates/canteen/consumption/create.html,sha256=k7E3SH9B605WlrJ7_ylncfoOe51qhHgIXKr_TYLukEs,15960
32
34
  fnschoo1/canteen/templates/canteen/ingredient/close.html,sha256=pLYeJmGaOEJKMUJdZmYzz_n--l28IRDQ4fXvetP_Vsc,200
33
35
  fnschoo1/canteen/templates/canteen/ingredient/create.html,sha256=xZvh0tP_cv2HPQ96JSHChO6Ni23tzHc5YJCUhE2yEqM,807
34
36
  fnschoo1/canteen/templates/canteen/ingredient/create_one.html,sha256=O8EPSvAnEZ-4VJiwFdoyxJrMOoMpRkH6CyfvWwHaVgc,599
@@ -40,7 +42,7 @@ fnschoo1/canteen/templates/canteen/meal_type/delete.html,sha256=1UmCyXD-6lbYl-IE
40
42
  fnschoo1/canteen/templates/canteen/meal_type/list.html,sha256=c5kJUE1OgpRtSrMV4wFwL_gbRSaX_XMM4Zt1JTx34_g,1907
41
43
  fnschoo1/canteen/templates/canteen/meal_type/update.html,sha256=Rfv1TamSFIKHzvUNlgnmrPmfmzrehPpuo5Hv8VF0yek,818
42
44
  fnschoo1/canteen/workbook/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
43
- fnschoo1/canteen/workbook/generate.py,sha256=1UUXdeGLdHFzZDGzMFOcoD6rsZtjRAzYFfKLpiRpVps,84102
45
+ fnschoo1/canteen/workbook/generate.py,sha256=iCVe844tDqFZXn8eVwpgR7udZRfQJNoTalU-8jJH4x0,84475
44
46
  fnschoo1/fnschool/__init__.py,sha256=TmHhzykpKNMoMf6eD-EKvbvmnlzs1XGHtvD55ae1sXs,287
45
47
  fnschoo1/fnschool/asgi.py,sha256=kzkqosS10uBlyBX53EXcsATcvEZmac6nsPzyOHCuucE,393
46
48
  fnschoo1/fnschool/settings.py,sha256=l9Y1iQCivSfmsNfnHltfXLzxP6gG4VMIL4GEZgAp8YM,4357
@@ -50,7 +52,7 @@ fnschoo1/fnschool/wsgi.py,sha256=dQq4S0vZWCz8w5R9KooJeLYTVFXvEgJRYe7NFZwVxU8,393
50
52
  fnschoo1/fnschool/templatetags/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
51
53
  fnschoo1/fnschool/templatetags/fnschool_tags.py,sha256=l5Zov4VlQKpz-69SFftP4kXyMymz-a0D5F_ss_eiFc4,568
52
54
  fnschoo1/locale/en/LC_MESSAGES/django.mo,sha256=M8AB6fmjwlEd761iFlasNWdiEYfE-2nIwBoioGtEVUo,404
53
- fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=LMXr4V7PzsK1AkSxnQmV1a6mDIdXRTJv3H-Om092BHc,19994
55
+ fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=3Ipol-cSR0HI3vvp7gbK1jxLGR7ZzeKncXX__rzyJCw,20121
54
56
  fnschoo1/profiles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
57
  fnschoo1/profiles/admin.py,sha256=93UCvdODI63KzCDfFFnKmfvCMGCp6FCG9WErE91i79Y,522
56
58
  fnschoo1/profiles/apps.py,sha256=WDu6eceFnDkBFMqquAolMZMo7XPb0ah6l2q2AruTrl4,215
@@ -76,7 +78,7 @@ fnschoo1/static/css/fnschool.css,sha256=nPjOh0vWuuFnZWrXcT2E3j3adL77v_PRyeml65Mv
76
78
  fnschoo1/static/images/favicon.ico,sha256=S8Tf0NsUdHnoYO0SEn-sig6YjB0atIpEtSlm7p1HxjY,5014
77
79
  fnschoo1/static/js/bootstrap.bundle.min.js,sha256=6kw84LCFc4QJzifgkle0FsvQrpt2NVRNPNjSSc9caiM,125881
78
80
  fnschoo1/static/js/bootstrap.min.js,sha256=0SHpZTHghUOz_BNedMzuH00z5lgwOSRKP_KI9G5Ogbk,88597
79
- fnschoo1/static/js/fnschool.js,sha256=A_IsEK7F_X83P-maARL5jDaQm90e1K48zAIv5r-34Vw,3019
81
+ fnschoo1/static/js/fnschool.js,sha256=tq9QzYsq8S3CvCqLk2U9tQuwQTcE-hYpf5YanqIHi4g,2959
80
82
  fnschoo1/static/js/jquery.min.js,sha256=np_WnfpAmUmEO_iheFAJKf6mbm0_laW3Ns4x7kjSlt4,162505
81
83
  fnschoo1/static/js/jquery.slim.min.js,sha256=p5YkbOjgHxX3hTadKlGuDW58NvJ1ldjjokDuDQ_5yXs,129962
82
84
  fnschoo1/static/js/popper.min.js,sha256=O2xdmtEow7gq3I7-0lKjshvxHkBe0hTWrMkbX2fy0XQ,36887
@@ -93,14 +95,14 @@ fnschoo1/templates/includes/_navigation.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
93
95
  fnschoo1/templates/includes/_paginator.html,sha256=Z-Hxcdmun4SJ1YcHnWTDLfW8wrngROiBTwr4NZWaPP4,1246
94
96
  fnschoo1/templates/registration/logged_out.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
97
  fnschoo1/templates/registration/login.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- fnschool-20251013.81959.843.dist-info/licenses/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
97
- fnschool-20251013.81959.843.dist-info/METADATA,sha256=DC-zwFsEtLabNxJmkbl26HyKqHjaJ_6S-Mm5MvvktP8,4752
98
- fnschool-20251013.81959.843.dist-info/SOURCES.txt.py,sha256=2LY2mshgNtxI3ICB-oBjyMYgJk2bQqeGFM5J5ay5TQs,4954
99
- fnschool-20251013.81959.843.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
100
- fnschool-20251013.81959.843.dist-info/dependency_links.txt.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
101
- fnschool-20251013.81959.843.dist-info/entry_points.txt,sha256=Ow5nChVFJY3O4TJAIE1ZydMev1MUtgRsT1b8eFP6728,54
102
- fnschool-20251013.81959.843.dist-info/entry_points.txt.py,sha256=7iOwIx_m9Y6xJt___BZHWJh27LV5hqWnUjmj77MoRys,47
103
- fnschool-20251013.81959.843.dist-info/requires.txt.py,sha256=PqRcHIQSMPUb271hacYrlSDHwB1WDZmlWUkh6RnBz_g,113
104
- fnschool-20251013.81959.843.dist-info/top_level.txt,sha256=s6ZKnNm94Q0-247a50eI7jDK98uPF6P2kC9Ovd3LUlM,9
105
- fnschool-20251013.81959.843.dist-info/top_level.txt.py,sha256=_7CbrSihm0dzBn_tTy2ass_Y2VlkVNT2eylE8mcfwHY,9
106
- fnschool-20251013.81959.843.dist-info/RECORD,,
98
+ fnschool-20251014.81348.830.dist-info/licenses/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
99
+ fnschool-20251014.81348.830.dist-info/METADATA,sha256=E1lDNu8EaNtE1fm1upQC0oIHHDKJBRGMUxl_ghQxR5c,4752
100
+ fnschool-20251014.81348.830.dist-info/SOURCES.txt.py,sha256=2LY2mshgNtxI3ICB-oBjyMYgJk2bQqeGFM5J5ay5TQs,4954
101
+ fnschool-20251014.81348.830.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
102
+ fnschool-20251014.81348.830.dist-info/dependency_links.txt.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
103
+ fnschool-20251014.81348.830.dist-info/entry_points.txt,sha256=Ow5nChVFJY3O4TJAIE1ZydMev1MUtgRsT1b8eFP6728,54
104
+ fnschool-20251014.81348.830.dist-info/entry_points.txt.py,sha256=7iOwIx_m9Y6xJt___BZHWJh27LV5hqWnUjmj77MoRys,47
105
+ fnschool-20251014.81348.830.dist-info/requires.txt.py,sha256=PqRcHIQSMPUb271hacYrlSDHwB1WDZmlWUkh6RnBz_g,113
106
+ fnschool-20251014.81348.830.dist-info/top_level.txt,sha256=s6ZKnNm94Q0-247a50eI7jDK98uPF6P2kC9Ovd3LUlM,9
107
+ fnschool-20251014.81348.830.dist-info/top_level.txt.py,sha256=_7CbrSihm0dzBn_tTy2ass_Y2VlkVNT2eylE8mcfwHY,9
108
+ fnschool-20251014.81348.830.dist-info/RECORD,,