diff --git a/cline_docs/frontendArchitecture.md b/cline_docs/frontendArchitecture.md new file mode 100644 index 00000000..d6fbea71 --- /dev/null +++ b/cline_docs/frontendArchitecture.md @@ -0,0 +1,208 @@ +# Frontend Architecture Documentation +Last Updated: 2024-02-21 + +## Core Technologies + +### 1. HTMX +- Used for dynamic updates and server interactions +- Enables partial page updates without full reloads +- Integrated with Django backend for seamless data exchange +- Used for form submissions and dynamic content loading + +### 2. AlpineJS +- Handles client-side interactivity and state management +- Used for dropdowns, modals, and other interactive components +- Provides reactive data binding and event handling +- Key features used: + - x-data for component state + - x-show/x-if for conditional rendering + - x-model for two-way data binding + - x-on for event handling + +### 3. Tailwind CSS +- Utility-first CSS framework for styling +- Custom configuration in tailwind.config.js +- Responsive design utilities +- Dark mode support with class-based implementation +- Custom color scheme with primary/secondary colors + +## Styling System + +### 1. Base Styles +- Font: Poppins (400, 500, 600, 700 weights) +- Color Scheme: + - Primary: Indigo (#4F46E5) + - Secondary: Rose (#E11D48) + - Gradients for interactive elements + - Dark mode compatible color palette + +### 2. Component Classes +- Button Variants: + - .btn-primary: Gradient background with hover effects + - .btn-secondary: Light/dark mode aware styling + - Social login buttons with brand colors +- Form Elements: + - .form-input: Styled input fields + - .form-label: Consistent label styling + - .form-error: Error message styling +- Cards: + - .card: Base card styling with shadows + - .auth-card: Special styling for authentication forms +- Status Badges: + - .status-operating: Green success state + - .status-closed: Red error state + - .status-construction: Yellow warning state + +### 3. Layout Components +- Responsive container system +- Grid system using Tailwind's grid utilities +- Flexbox-based navigation and content layouts +- Mobile-first responsive design + +## Interactive Components + +### 1. Navigation +- Responsive header with mobile menu +- User dropdown menu with authentication states +- Theme toggle (light/dark mode) +- Mobile-optimized navigation drawer + +### 2. Forms +- Location autocomplete system +- Form validation with error states +- CSRF protection integration +- File upload handling + +### 3. Alerts System +- Timed auto-dismissing alerts +- Slide animations for entry/exit +- Context-aware styling (success, error, info, warning) +- Accessible notifications + +### 4. Modal System +- HTMX-powered dynamic content loading +- Alpine.js state management +- Backdrop blur effects +- Keyboard navigation support + +## JavaScript Architecture + +### 1. Core Functionality +- Theme management with local storage persistence +- HTMX configuration and setup +- Alpine.js component initialization +- Event delegation and handling + +### 2. Location Autocomplete +- Progressive enhancement for location fields +- Country/Region/City hierarchical selection +- Dynamic filtering based on parent selections +- AJAX-powered suggestions + +### 3. Form Handling +- Client-side validation +- File upload preview +- Dynamic form updates +- Error state management + +## Performance Optimizations + +### 1. Asset Loading +- Deferred script loading +- Preloaded critical assets +- Minified production assets +- Cached static resources + +### 2. Rendering +- Progressive enhancement +- Partial page updates +- Lazy loading of images +- Optimized animation performance + +### 3. State Management +- Efficient DOM updates +- Debounced search inputs +- Throttled scroll handlers +- Memory leak prevention + +## Accessibility Features + +### 1. Semantic HTML +- Proper heading hierarchy +- ARIA labels and roles +- Semantic landmark regions +- Meaningful alt text + +### 2. Keyboard Navigation +- Focus management +- Skip links +- Keyboard shortcuts +- Focus trapping in modals + +### 3. Screen Readers +- ARIA live regions for alerts +- Status role for notifications +- Description text for icons +- Form label associations + +## Development Workflow + +### 1. CSS Organization +- Utility-first approach +- Component-specific styles +- Shared design tokens +- Dark mode variants + +### 2. JavaScript Patterns +- Event delegation +- Component encapsulation +- State management +- Error handling + +### 3. Testing Considerations +- Browser compatibility +- Responsive design testing +- Accessibility testing +- Performance monitoring + +## Browser Support + +### 1. Supported Browsers +- Chrome (latest 2 versions) +- Firefox (latest 2 versions) +- Safari (latest 2 versions) +- Edge (latest version) + +### 2. Fallbacks +- Graceful degradation +- No-script support +- Legacy browser handling +- Progressive enhancement + +## Security Measures + +### 1. CSRF Protection +- Token validation +- Secure form submission +- Protected AJAX requests +- Session handling + +### 2. XSS Prevention +- Content sanitization +- Escaped output +- Secure cookie handling +- Input validation + +## Future Considerations + +### 1. Potential Improvements +- Component library development +- Enhanced type checking +- Performance monitoring +- Automated testing + +### 2. Maintenance +- Regular dependency updates +- Browser compatibility checks +- Performance optimization +- Security audits \ No newline at end of file diff --git a/cline_docs/techContext.md b/cline_docs/techContext.md index 94236669..bdcf5e71 100644 --- a/cline_docs/techContext.md +++ b/cline_docs/techContext.md @@ -20,22 +20,22 @@ ### Frontend Technologies 1. HTMX - - Dynamic updates - - Partial rendering - - Server-side processing - - Progressive enhancement + - Dynamic updates and server interactions + - Partial rendering and progressive enhancement + - Server-side processing and form handling + - See frontendArchitecture.md for detailed implementation 2. AlpineJS - - UI state management - - Component behavior - - Event handling - - DOM manipulation + - UI state management and reactivity + - Component behavior and lifecycle + - Event handling and DOM manipulation + - See frontendArchitecture.md for component patterns 3. Tailwind CSS - - Utility-first styling - - Component design - - Responsive layouts - - Custom configuration + - Utility-first styling with custom configuration + - Component design system + - Responsive layouts and dark mode support + - See frontendArchitecture.md for styling guide ## Integration Patterns @@ -87,16 +87,24 @@ ### Frontend Libraries 1. CSS Framework - - Tailwind CSS - - Custom plugins - - Theme configuration - - Utility classes + - Tailwind CSS with custom configuration + - Theme system with light/dark mode support + - Component-specific style patterns + - See frontendArchitecture.md for complete styling guide 2. JavaScript - - AlpineJS core - - HTMX library - - Utility functions - - Custom components + - AlpineJS for reactive components + - HTMX for server interactions + - Location autocomplete system + - Alert and modal components + - See frontendArchitecture.md for component documentation + +3. UI Components + - Form elements and validation + - Navigation and menus + - Status indicators and badges + - Modal and alert system + - See frontendArchitecture.md for implementation details ## Infrastructure Choices @@ -143,10 +151,14 @@ ### Technology Limitations 1. Frontend - - HTMX/AlpineJS only - - No additional frameworks - - Browser compatibility - - Performance requirements + - HTMX/AlpineJS only (no React/Vue/Angular) + - Progressive enhancement approach required + - Must support latest 2 versions of major browsers + - See frontendArchitecture.md for detailed browser support + - Performance targets: + * First contentful paint < 1.5s + * Time to interactive < 2s + * Core Web Vitals compliance 2. Backend - Django version constraints diff --git a/pyproject.toml b/pyproject.toml index 6ad05c57..c2210a2f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,3 +23,36 @@ build-backend = "poetry.core.masonry.api" [tool.reactivated] django_project = "thrillwiki" django_settings = "thrillwiki.settings" + +[project] +name = "thrillwiki" +version = "0.1.0" +dependencies = [ + "Django>=5.0", + "djangorestframework>=3.14.0", + "django-cors-headers>=4.3.1", + "django-allauth>=0.60.1", + "django-oauth-toolkit>=3.0.1", + "dj-rest-auth>=7.0.0", + "pyjwt>=2.10.1", + "psycopg2-binary>=2.9.9", + "dj-database-url>=2.3.0", + "requests>=2.32.3", + "django-webpack-loader>=3.1.1", + "python-dotenv>=1.0.1", + "Pillow>=10.2.0", + "django-cleanup>=8.0.0", + "django-filter>=23.5", + "django-htmx>=1.17.2", + "whitenoise>=6.6.0", + "pycountry>=24.6.1", + "black>=24.1.0", + "flake8>=7.1.1", + "pytest>=8.3.4", + "pytest-django>=4.9.0", + "channels>=4.2.0", + "channels-redis>=4.2.1", + "daphne>=4.1.2", + "django-simple-history>=3.5.0", + "django-tailwind-cli>=2.21.1" +] diff --git a/static/css/tailwind.css b/static/css/tailwind.css index c7d164cb..dab10d4b 100644 --- a/static/css/tailwind.css +++ b/static/css/tailwind.css @@ -1,5 +1,113 @@ +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + /* -! tailwindcss v3.4.11 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com */ /* @@ -641,114 +749,6 @@ select { outline: 1px auto -webkit-focus-ring-color; } -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - .\!container { width: 100% !important; } diff --git a/thrillwiki/settings.py b/thrillwiki/settings.py index 2d1b8c7d..e5918e1b 100644 --- a/thrillwiki/settings.py +++ b/thrillwiki/settings.py @@ -15,6 +15,10 @@ DEBUG = True CSRF_TRUSTED_ORIGINS = ["https://beta.thrillwiki.com"] ALLOWED_HOSTS = ["*"] +# GeoDjango Settings +GDAL_LIBRARY_PATH = "/opt/homebrew/lib/libgdal.dylib" +GEOS_LIBRARY_PATH = "/opt/homebrew/lib/libgeos_c.dylib" + # Application definition INSTALLED_APPS = [ "django.contrib.admin", diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..6df6a47b --- /dev/null +++ b/uv.lock @@ -0,0 +1,932 @@ +version = 1 +requires-python = ">=3.13" + +[[package]] +name = "asgiref" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]asgiref-3.8.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]6c64238fc34bdc3fec84d590", size = 35186 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]asgiref-3.8.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]6aee72a58826471390335e47", size = 23828 }, +] + +[[package]] +name = "attrs" +version = "24.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]attrs-24.3.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]b0b3f9238ab904ce1e85baff", size = 805984 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]attrs-24.3.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]50cd2aa0e0625ef19850c308", size = 63397 }, +] + +[[package]] +name = "autobahn" +version = "24.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "hyperlink" }, + { name = "setuptools" }, + { name = "txaio" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]autobahn-24.4.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]795f2ea7d823796642ee92c9", size = 482700 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]autobahn-24.4.2-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]04d088cd7ab297db25918e81", size = 666965 }, +] + +[[package]] +name = "automat" +version = "24.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]automat-24.8.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]20c323d376373d8ee6306d88", size = 128679 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]Automat-24.8.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]0ab63ff808566ce90551e02a", size = 42585 }, +] + +[[package]] +name = "black" +version = "24.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]black-24.10.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c7a4a937816dd6bddedc4875", size = 645813 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]ede32f06a21386a04cedb981", size = 1643986 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]7da5a8bfb7aeb5a9ef89066b", size = 1448085 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]19519373d60d31746068dbf2", size = 1760928 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]2a5b88831c83962eb9984c1b", size = 1436875 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]black-24.10.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]9853e47a294a3dd963c1dd7d", size = 206898 }, +] + +[[package]] +name = "certifi" +version = "2024.12.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]certifi-2024.12.14.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]ddaec3f2546c1caf65f191db", size = 166010 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]certifi-2024.12.14-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]d389406136d332ed4967ec56", size = 164927 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]1e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]70cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:[AWS-SECRET-REMOVED]8e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:[AWS-SECRET-REMOVED]acbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]73ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]03a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]dfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]13dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "channels" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]channels-4.2.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]580fadb99e45dca5e39fdd59", size = 26554 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]channels-4.2.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]08216a242fc56b1db0ffde1a", size = 30935 }, +] + +[[package]] +name = "channels-redis" +version = "4.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "channels" }, + { name = "msgpack" }, + { name = "redis" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]channels_redis-4.2.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c6664057d2e5c31e80d636dd", size = 31152 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]channels_redis-4.2.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]0cd3f3f593a23d91d346b6f4", size = 20487 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:[AWS-SECRET-REMOVED]8a4e73a0173466b688f29dda", size = 195698 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]024cb8ad7d308b4cd95f8313", size = 140162 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:[AWS-SECRET-REMOVED]27c34440b0d29d8a2f50a6c9", size = 150263 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:[AWS-SECRET-REMOVED]7bc9fc86d63f9c09af3fa11b", size = 142966 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]ba6cf6e3625485a70a038d11", size = 144992 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]f4dd612dcaf65d5e815f837f", size = 147162 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]7bb75eb02dd12339b57749dd", size = 140972 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]9cd2a8cc8966d6a5218c5cb2", size = 149095 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:[AWS-SECRET-REMOVED]3eca9bcb98df6b5a43eb8886", size = 152668 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:[AWS-SECRET-REMOVED]d66fb2823173d73f188ce601", size = 150073 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]90446f1118f4216e307e48cd", size = 145732 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]d4e9e5c32d30adda88cbd407", size = 95391 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]547d22c2c3f66454daa11971", size = 102702 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]6061f3c875a71ced1780ab85", size = 49767 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]click-8.1.8.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]click-8.1.8-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]colorama-0.4.6.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]e5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]3e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "constantly" +version = "23.10.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]constantly-23.10.4.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]4b06c35e0efd050b7f1c7cbd", size = 13300 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]constantly-23.10.4-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]39f51dfd4c43853b68dfa3f9", size = 13547 }, +] + +[[package]] +name = "cryptography" +version = "44.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]ea510a5286fe0acabe153a02", size = 710657 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:[AWS-SECRET-REMOVED]335d4cacb5ab4d4d34f2a123", size = 6541833 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]de94607ec6069ef724fad092", size = 3922710 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]de923d58ebd3cec47a0ae43f", size = 4137546 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]f9297ee694ca1ee9c2c7e5eb", size = 3915420 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]58abe008a82705f9ee96f40b", size = 4154498 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]65bd4cf87883a7e7006cc543", size = 3932569 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]4dfde98aa6add34614e97c8e", size = 4016721 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]63c40e821b39f74bf48d9c5e", size = 4240915 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]45d8d2aecbb20671658b9053", size = 2757925 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]3620173e28c11d3e626c21bd", size = 3202055 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:[AWS-SECRET-REMOVED]d9c576e81f4dc4d8b2b31591", size = 6542801 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]305d6be5721643c22dd4e2b7", size = 3922613 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]18de18556dde92575e05defc", size = 4137925 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]783b9ac21e7e47dc5554e289", size = 3915417 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]12233306161c8f4b819960b7", size = 4155160 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]ea40d4df2fc7aa08b76b9e6c", size = 3932331 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]2786fd39793c36c6d5cb1c64", size = 4017372 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]4696a03cfdbe469b8ed79285", size = 4239657 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]914199194e746c893788d417", size = 2758672 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]17e597d46d7833ee59b97ede", size = 3202071 }, +] + +[[package]] +name = "daphne" +version = "4.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "autobahn" }, + { name = "twisted", extra = ["tls"] }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]daphne-4.1.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]9eafac4247381896d6f33761", size = 37882 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]daphne-4.1.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]45f765965fdc1e658ea5290a", size = 30940 }, +] + +[[package]] +name = "dj-database-url" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]dj_database_url-2.3.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]eed8a53d1fac004cc5288787", size = 10980 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]dj_database_url-2.3.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]a80884c2fc08cc570452521e", size = 7793 }, +] + +[[package]] +name = "dj-rest-auth" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "djangorestframework" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]dj-rest-auth-7.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]69f7cdc84c7a329aeae1f86e", size = 221021 } + +[[package]] +name = "django" +version = "5.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "sqlparse" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]Django-5.1.4.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]438a35e6b4c895e86bedc82a", size = 10716397 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]Django-5.1.4-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]ab86bae5338e3f7b69896cf0", size = 8276471 }, +] + +[[package]] +name = "django-allauth" +version = "65.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_allauth-65.3.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]a86d873a8a9fd8f0ec57bbbf", size = 1546784 } + +[[package]] +name = "django-cleanup" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_cleanup-9.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]5aa21b90df2c7e4ba633531e", size = 17917 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_cleanup-9.0.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]fe3ea3cc80ba47ae40ad880c", size = 10726 }, +] + +[[package]] +name = "django-cors-headers" +version = "4.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_cors_headers-4.6.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]177cb02a29bd6eae8cf63aa8", size = 20961 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_cors_headers-4.6.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]d826fb6f53b21c63f5d48ba3", size = 12791 }, +] + +[[package]] +name = "django-filter" +version = "24.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_filter-24.3.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]69f8d15599b358e24a2cd9c3", size = 144444 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_filter-24.3-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]0aeb2b4ff4f16b02dd49dc64", size = 95011 }, +] + +[[package]] +name = "django-htmx" +version = "1.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_htmx-1.21.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]cb8435a89e27f45995691572", size = 9611 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_htmx-1.21.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]e7ccd2963495e69afbdb6abe", size = 6901 }, +] + +[[package]] +name = "django-oauth-toolkit" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "jwcrypto" }, + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_oauth_toolkit-3.0.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]8557437733eec3c0cf71db02", size = 99816 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_oauth_toolkit-3.0.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]221bbb1cffcb50b8932e55ed", size = 77299 }, +] + +[[package]] +name = "django-simple-history" +version = "3.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_simple_history-3.7.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]0ff5dfe736fbd1ebc0cf39f9", size = 230317 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_simple_history-3.7.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]94676d19b88d52c94a57a52c", size = 139406 }, +] + +[[package]] +name = "django-tailwind-cli" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "django-typer" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_tailwind_cli-2.21.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]de4358b7439da37da025110b", size = 66542 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_tailwind_cli-2.21.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]c3df1005792be23066e78257", size = 12927 }, +] + +[[package]] +name = "django-typer" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "django" }, + { name = "shellingham" }, + { name = "typer-slim" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_typer-2.6.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]418b3861844a2eabdbf96fc3", size = 54640 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_typer-2.6.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]7e4a497a1c46696eebddec62", size = 56114 }, +] + +[[package]] +name = "django-webpack-loader" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django-webpack-loader-3.1.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]a1400e1a2feb5c2ba7b6f8c4", size = 18371 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]django_webpack_loader-3.1.1-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]a2dd0da4c7610b3e695f67ba", size = 19004 }, +] + +[[package]] +name = "djangorestframework" +version = "3.15.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]djangorestframework-3.15.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]d8f47ebc68981b56840107ad", size = 1067420 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]djangorestframework-3.15.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]f79f5eed1e32b2f096944b20", size = 1071235 }, +] + +[[package]] +name = "flake8" +version = "7.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe" }, + { name = "pycodestyle" }, + { name = "pyflakes" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]flake8-7.1.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]a8fa673e7aea87b7198b8d38", size = 48054 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]e96ab708770ae0364dd03213", size = 57731 }, +] + +[[package]] +name = "hyperlink" +version = "21.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]hyperlink-21.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]d093fc53efd2e91d2705a56b", size = 140743 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]hyperlink-21.0.0-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]5c5b3f819ff4ed80f25af1b4", size = 74638 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]idna-3.10.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]f2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]idna-3.10-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]a6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "incremental" +version = "24.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]incremental-24.7.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]574c59c8e8912be4ebd464c9", size = 28157 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]incremental-24.7.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]5e8333ca5d95e24b0ed7b8fe", size = 20516 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]iniconfig-2.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "jwcrypto" +version = "1.5.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]jwcrypto-1.5.6.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]b066937dc8b8379d65b1b039", size = 87168 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]jwcrypto-1.5.6-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]8be71f67f03566692fd55789", size = 92520 }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]mccabe-0.7.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]7d5c7794f74009290f236325", size = 9658 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]6e3dca0bda5a15f863427b6e", size = 7350 }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c698be3984eee260bcb2896e", size = 167260 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:[AWS-SECRET-REMOVED]0b44eb36324dcb02a13bfddf", size = 151142 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]7604178026085f60ce109330", size = 84523 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]0f1f2a7027e683956d04b734", size = 81556 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]326a2aaa0dbf7a4001cd823e", size = 392105 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]75f9a34793307d9def08e6ca", size = 399979 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]91d18f60b2061f402b9a4915", size = 383816 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]a90b4dd5cf9c476a30e9708d", size = 380973 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]2500ba8cd80a522964e31434", size = 387435 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]6b8d4f341c428109e9fcde8c", size = 399082 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]bd25f5139dcdaba0ae35a4cc", size = 69037 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]f12c77fa838d9f198147a23f", size = 75140 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]mypy_extensions-1.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "oauthlib" +version = "3.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]oauthlib-3.2.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]3f38915dc0655d5a633dd918", size = 177352 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]48a0d71c287fe40e7067fbca", size = 151688 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]packaging-24.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]packaging-24.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pathspec-0.12.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pathspec-0.12.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "pillow" +version = "11.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]41e100c1552930151f677739", size = 46737780 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]3bcdbaf4642509de1942a699", size = 3147300 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]ffb7e0f4a8e8a16732150f38", size = 2978742 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]3bfd41d7d9ff573d74f2a6b2", size = 4194349 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]fe3100ba2258b973bd2bc1b2", size = 4298714 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]dd7d58998c630e6dbade8527", size = 4208514 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]792d1876274991adec7b93fa", size = 4380055 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]b27fb871f352a22ab8dcf45f", size = 4296751 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]b5cb352240c8d63b414013eb", size = 4430378 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]fc078128cfaa42cf5cb38798", size = 2249588 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]dfeee64245f30c3270b994de", size = 2567509 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]f71dcfd155aa79c603873b84", size = 2254791 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]9eaa098040a35272a8efb22b", size = 3150854 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]f9ad04487f9ab60dc4bb6003", size = 2982369 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]73556fa5d5950f5b354087e2", size = 4333703 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]6e1f55bba7606d1c94dd623a", size = 4412550 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]f2b717b66871c4ad9859d7e8", size = 4461038 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:[AWS-SECRET-REMOVED]bd01287f50521ecb05a313f8", size = 2253197 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]2462532e62baa0732163a904", size = 2572169 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]84b3ad82e3d711da9ba287d3", size = 2256828 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]platformdirs-4.3.6.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pluggy-1.5.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]9195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pluggy-1.5.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2-binary-2.9.10.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]fe2250e6522edaa782a06de2", size = 385764 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]85872c7f7be23be5a53eb18d", size = 3044699 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]05aed9415c3b093faaeb10fb", size = 3275245 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]cdcf71749c193cea540a74f7", size = 2851631 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]7d6943bfe6fec70ac4e4690d", size = 3082140 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:[AWS-SECRET-REMOVED]968e7db17ea96df3c023ef73", size = 3264762 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]cc5f065e8d5f840061bd0673", size = 3020967 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]6f4778739cb1a5a32f607d1f", size = 2872326 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]07c6df12b7737febc40f0909", size = 2822712 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:[AWS-SECRET-REMOVED]860ff3bbe1384130828714b1", size = 2920155 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]998122abe1dce6428bd86567", size = 2959356 }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyasn1-0.6.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]3cb4a5ae3857a3170128b034", size = 145322 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]0ab7e886e2d0f7672af84629", size = 83135 }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyasn1_modules-0.4.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]2ad4377f240d33ac2ab60a7c", size = 310028 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]568fc30e2574a6c7d07838fd", size = 181537 }, +] + +[[package]] +name = "pycodestyle" +version = "2.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pycodestyle-2.12.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]3e6f842df996bf62f6d73521", size = 39232 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]0cd23c61ea0040283a9d78b3", size = 31284 }, +] + +[[package]] +name = "pycountry" +version = "24.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pycountry-24.6.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]dcc1315613174f6466c10221", size = 6043910 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pycountry-24.6.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]8a27f8942c8dca351d6ce06f", size = 6335189 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pycparser-2.22.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]f992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pycparser-2.22-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pyflakes" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyflakes-3.2.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c8b630657d1701f026f8af3f", size = 63788 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]a3e24c251c5c62489568074a", size = 62725 }, +] + +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyjwt-2.10.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]e6648ee0a2aedb6cf9381953", size = 87785 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]44f25406ffaebd50bd98dacb", size = 22997 }, +] + +[[package]] +name = "pyopenssl" +version = "24.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyopenssl-24.3.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c5ce1cf43a9a173b8138bb36", size = 178944 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pyOpenSSL-24.3.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]657a08a989fb3be5514c904a", size = 56111 }, +] + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pytest-8.3.4.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pytest-8.3.4-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[package]] +name = "pytest-django" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pytest_django-4.9.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]6807121f11bd6a3b03428314", size = 84067 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]pytest_django-4.9.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]a549a7d38a3154d5731b2b99", size = 23723 }, +] + +[[package]] +name = "python-dotenv" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]python-dotenv-1.0.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]77783dc6ee09987c37ec10ca", size = 39115 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]0b564ed0d674909a68ebf16a", size = 19863 }, +] + +[[package]] +name = "redis" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]redis-5.2.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]0f0e44413dd7d9c060a54e0f", size = 4608355 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]redis-5.2.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]e025f5dd83e6a6418b6989e4", size = 261502 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]requests-2.32.3.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]requests-2.32.3-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "service-identity" +version = "24.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cryptography" }, + { name = "pyasn1" }, + { name = "pyasn1-modules" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]service_identity-24.2.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]013b375c355751557cbe8e09", size = 39245 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]service_identity-24.2.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]6e1e0d3e0fe2b8a59f6d4a85", size = 11364 }, +] + +[[package]] +name = "setuptools" +version = "75.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]setuptools-75.6.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]19366cc914424cdbd28252f6", size = 1337429 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]setuptools-75.6.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]f28f722cce7c273d253aaf7d", size = 1224032 }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]shellingham-1.5.4.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]34bfce294b0a0291363404de", size = 10310 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]56c89140852d1120324e8686", size = 9755 }, +] + +[[package]] +name = "sqlparse" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]sqlparse-0.5.3.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]3cfeaa8e6ff60b4807ec9272", size = 84999 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]cdfc72e281548517081f16ca", size = 44415 }, +] + +[[package]] +name = "thrillwiki" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "black" }, + { name = "channels" }, + { name = "channels-redis" }, + { name = "daphne" }, + { name = "dj-database-url" }, + { name = "dj-rest-auth" }, + { name = "django" }, + { name = "django-allauth" }, + { name = "django-cleanup" }, + { name = "django-cors-headers" }, + { name = "django-filter" }, + { name = "django-htmx" }, + { name = "django-oauth-toolkit" }, + { name = "django-simple-history" }, + { name = "django-tailwind-cli" }, + { name = "django-webpack-loader" }, + { name = "djangorestframework" }, + { name = "flake8" }, + { name = "pillow" }, + { name = "psycopg2-binary" }, + { name = "pycountry" }, + { name = "pyjwt" }, + { name = "pytest" }, + { name = "pytest-django" }, + { name = "python-dotenv" }, + { name = "requests" }, + { name = "whitenoise" }, +] + +[package.metadata] +requires-dist = [ + { name = "black", specifier = ">=24.1.0" }, + { name = "channels", specifier = ">=4.2.0" }, + { name = "channels-redis", specifier = ">=4.2.1" }, + { name = "daphne", specifier = ">=4.1.2" }, + { name = "dj-database-url", specifier = ">=2.3.0" }, + { name = "dj-rest-auth", specifier = ">=7.0.0" }, + { name = "django", specifier = ">=5.0" }, + { name = "django-allauth", specifier = ">=0.60.1" }, + { name = "django-cleanup", specifier = ">=8.0.0" }, + { name = "django-cors-headers", specifier = ">=4.3.1" }, + { name = "django-filter", specifier = ">=23.5" }, + { name = "django-htmx", specifier = ">=1.17.2" }, + { name = "django-oauth-toolkit", specifier = ">=3.0.1" }, + { name = "django-simple-history", specifier = ">=3.5.0" }, + { name = "django-tailwind-cli", specifier = ">=2.21.1" }, + { name = "django-webpack-loader", specifier = ">=3.1.1" }, + { name = "djangorestframework", specifier = ">=3.14.0" }, + { name = "flake8", specifier = ">=7.1.1" }, + { name = "pillow", specifier = ">=10.2.0" }, + { name = "psycopg2-binary", specifier = ">=2.9.9" }, + { name = "pycountry", specifier = ">=24.6.1" }, + { name = "pyjwt", specifier = ">=2.10.1" }, + { name = "pytest", specifier = ">=8.3.4" }, + { name = "pytest-django", specifier = ">=4.9.0" }, + { name = "python-dotenv", specifier = ">=1.0.1" }, + { name = "requests", specifier = ">=2.32.3" }, + { name = "whitenoise", specifier = ">=6.6.0" }, +] + +[[package]] +name = "twisted" +version = "24.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "automat" }, + { name = "constantly" }, + { name = "hyperlink" }, + { name = "incremental" }, + { name = "typing-extensions" }, + { name = "zope-interface" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]twisted-24.11.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]45b10d19043f2b57eb0115b5", size = 3526722 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]twisted-24.11.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]d3b2b8252d76f2ba65f54261", size = 3188667 }, +] + +[package.optional-dependencies] +tls = [ + { name = "idna" }, + { name = "pyopenssl" }, + { name = "service-identity" }, +] + +[[package]] +name = "txaio" +version = "23.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]txaio-23.1.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]60b84a757ac769bd404ff704", size = 53704 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]txaio-23.1.1-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]5fad2cf72b0f37f8cefcb490", size = 30512 }, +] + +[[package]] +name = "typer-slim" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]typer_slim-0.15.1.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]3daf899f3863514aa926c725", size = 99874 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]typer_slim-0.15.1-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]30f31ed8c55f4f0779efe6df", size = 44968 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]typing_extensions-4.12.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]c324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]tzdata-2024.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]413feec7069d533d6b4e31cc", size = 193282 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]448fbc874186f0abd79565cd", size = 346586 }, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]urllib3-2.3.0.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]c0d1d3795a07f1ba96f0204d", size = 307268 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]urllib3-2.3.0-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]710050facf0dd6911440e3df", size = 128369 }, +] + +[[package]] +name = "whitenoise" +version = "6.8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]whitenoise-6.8.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]cc8bf99add90817a530dd1d4", size = 25892 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]whitenoise-6.8.2-py3-none-any.whl", hash = "sha256:[AWS-SECRET-REMOVED]ab9726e5772ac50fb45d2280", size = 20158 }, +] + +[[package]] +name = "zope-interface" +version = "7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2.tar.gz", hash = "sha256:[AWS-SECRET-REMOVED]b46dd7d1a65e82a4872728fe", size = 252960 } +wheels = [ + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]6cb0a628e3dc90442b53dd98", size = 208961 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:[AWS-SECRET-REMOVED]d5c775acdef98cdb1119768d", size = 209356 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:[AWS-SECRET-REMOVED]557c11196d42e26c01a69a4c", size = 264196 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:[AWS-SECRET-REMOVED]b85fb278edb2e34841055398", size = 259237 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:[AWS-SECRET-REMOVED]660f1d67896ca62d9628045b", size = 264696 }, + { url = "https://files.pythonhosted.[AWS-SECRET-REMOVED][AWS-SECRET-REMOVED]zope.interface-7.2-cp313-cp313-win_amd64.whl", hash = "sha256:[AWS-SECRET-REMOVED]9fa5bb01caa1e6284e48c0cd", size = 212472 }, +]