diff --git a/job_scraper.py b/job_scraper.py new file mode 100644 index 0000000..3d28155 --- /dev/null +++ b/job_scraper.py @@ -0,0 +1,116 @@ +import csv +import datetime +from jobspy.google import Google +from jobspy.linkedin import LinkedIn +from jobspy.indeed import Indeed +from jobspy.ziprecruiter import ZipRecruiter +from jobspy.model import ScraperInput + +# Define job sources +SOURCES = { + "google": Google, + "linkedin": LinkedIn, + "indeed": Indeed, + "zip_recruiter": ZipRecruiter, +} + +# Define search preferences +SEARCH_TERMS = ["Automation Engineer", "CRM Manager", "Implementation Specialist"] +RESULTS_WANTED = 200 # Fetch more jobs +MAX_DAYS_OLD = 2 # Fetch jobs posted in last 48 hours +TARGET_STATE = "NY" # Only keep jobs from New York + + +def scrape_jobs(search_terms, results_wanted, max_days_old, target_state): + """Scrape jobs from multiple sources and filter by state.""" + all_jobs = [] + today = datetime.date.today() + print("\n🔎 DEBUG: Fetching jobs for search terms:", search_terms) + + for search_term in search_terms: + for source_name, source_class in SOURCES.items(): + print(f"\n🚀 Scraping {search_term} from {source_name}...") + + scraper = source_class() + search_criteria = ScraperInput( + site_type=[source_name], + search_term=search_term, + results_wanted=results_wanted, + ) + + job_response = scraper.scrape(search_criteria) + + for job in job_response.jobs: + # Normalize location fields + location_city = job.location.city.strip() if job.location.city else "Unknown" + location_state = job.location.state.strip().upper() if job.location.state else "Unknown" + location_country = str(job.location.country) if job.location.country else "Unknown" + + # Debug: Show all jobs being fetched + print(f"📍 Fetched Job: {job.title} - {location_city}, {location_state}, {location_country}") + + # Ensure the job is recent + if job.date_posted and (today - job.date_posted).days <= max_days_old: + if location_state == target_state or job.is_remote: + print(f"✅ MATCH (In NY or Remote): {job.title} - {location_city}, {location_state} (Posted {job.date_posted})") + + all_jobs.append({ + "Job ID": job.id, + "Job Title (Primary)": job.title, + "Company Name": job.company_name if job.company_name else "Unknown", + "Industry": job.company_industry if job.company_industry else "Not Provided", + "Experience Level": job.job_level if job.job_level else "Not Provided", + "Job Type": job.job_type[0].name if job.job_type else "Not Provided", + "Is Remote": job.is_remote, + "Currency": job.compensation.currency if job.compensation else "", + "Salary Min": job.compensation.min_amount if job.compensation else "", + "Salary Max": job.compensation.max_amount if job.compensation else "", + "Date Posted": job.date_posted.strftime("%Y-%m-%d") if job.date_posted else "Not Provided", + "Location City": location_city, + "Location State": location_state, + "Location Country": location_country, + "Job URL": job.job_url, + "Job Description": job.description[:500] if job.description else "No description available", + "Job Source": source_name + }) + else: + print(f"❌ Ignored (Wrong State): {job.title} - {location_city}, {location_state} (Posted {job.date_posted})") + else: + print(f"⏳ Ignored (Too Old): {job.title} - {location_city}, {location_state} (Posted {job.date_posted})") + + print(f"\n✅ {len(all_jobs)} jobs retrieved in NY") + return all_jobs + + +def save_jobs_to_csv(jobs, filename="jobspy_output.csv"): + """Save job data to a CSV file.""" + if not jobs: + print("⚠️ No jobs found matching criteria.") + return + + fieldnames = [ + "Job ID", "Job Title (Primary)", "Company Name", "Industry", + "Experience Level", "Job Type", "Is Remote", "Currency", + "Salary Min", "Salary Max", "Date Posted", "Location City", + "Location State", "Location Country", "Job URL", "Job Description", + "Job Source" + ] + + with open(filename, mode="w", newline="", encoding="utf-8") as file: + writer = csv.DictWriter(file, fieldnames=fieldnames) + writer.writeheader() + writer.writerows(jobs) + + print(f"✅ Jobs saved to {filename} ({len(jobs)} entries)") + + +# Run the scraper with multiple job searches +job_data = scrape_jobs( + search_terms=SEARCH_TERMS, + results_wanted=RESULTS_WANTED, + max_days_old=MAX_DAYS_OLD, + target_state=TARGET_STATE +) + +# Save results to CSV +save_jobs_to_csv(job_data) diff --git a/jobspy/indeed/util.py b/jobspy/indeed/util.py index 5515ed1..e1d6445 100644 --- a/jobspy/indeed/util.py +++ b/jobspy/indeed/util.py @@ -57,15 +57,13 @@ def is_job_remote(job: dict, description: str) -> bool: is_remote_in_attributes = any( any(keyword in attr["label"].lower() for keyword in remote_keywords) for attr in job["attributes"] - ) - is_remote_in_description = any( - keyword in description.lower() for keyword in remote_keywords + ) is_remote_in_location = any( keyword in job["location"]["formatted"]["long"].lower() for keyword in remote_keywords ) - return is_remote_in_attributes or is_remote_in_description or is_remote_in_location + return is_remote_in_attributes or is_remote_in_location def get_compensation_interval(interval: str) -> CompensationInterval: diff --git a/jobspy_output.csv b/jobspy_output.csv new file mode 100644 index 0000000..c7af18e --- /dev/null +++ b/jobspy_output.csv @@ -0,0 +1,317 @@ +Job ID,Job Title (Primary),Company Name,Industry,Experience Level,Job Type,Is Remote,Currency,Salary Min,Salary Max,Date Posted,Location City,Location State,Location Country,Job URL,Job Description,Job Source +go-ceOdje7Nonp-drm5AAAAAA==,Cloud Automation Engineer,confidential,Not Provided,Not Provided,Not Provided,True,,,,2025-03-06,Maryland,Unknown,Unknown,https://www.apexsystems.com/job/2058686_usa/cloud-automation-engineer?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic,"Job Title: Cloud Automation Engineer Job DescriptionResponsibilities:Our client is seeking a lead cloud automation engineer to join our team of qualified, diverse individuals. This position will be working 100% remote and will focus on automation in support of the cloud infrastructure team. A candidate in this position will work as part of an enterprise cloud services team and will assist in the automation of cloud infrastructure, ensuring efficient, reliable, and scalable operations. The candid",google +go-h5r_PvEhh6Wo8JMsAAAAAA==,Senior Automation Engineer,1000 Merck Sharp & Dohme LLC,Not Provided,Not Provided,Not Provided,True,,,,2025-03-05,Elkton,VA,Unknown,"https://www.ziprecruiter.com/c/1000-Merck-Sharp-&-Dohme-LLC/Job/Senior-Automation-Engineer/-in-Elkton,VA?jid=939b4ddd4a1ec066&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic","Job Description + +Are you looking for an exciting opportunity with a rapidly growing pharmaceutical manufacturer? If so, then this is the opportunity for you! + +Strategic Summary + +The Senior Specialist Manufacturing Automation Engineer in the Global Vaccines Operations Builder's Organization will be responsible for the manufacturing process automation systems in the Building 63A Syringe Filling Facility at the West Point, PA site. + +Key Responsibilities include +• Troubleshooting challenging equipme",google +go-tbok0fIrR0NLYg0bAAAAAA==,Test Automation Engineer,Locus Health,Not Provided,Not Provided,Not Provided,True,,,,2025-03-05,Charlottesville,VA,Unknown,https://www.indeed.com/viewjob?jk=6017dde9c2269f2b&utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic,"Locus Health blends a combination of innovative technology solutions & clinical services to improve the quality of care and outcomes for patients. Our unique approach has reduced patient readmission rates at UVA Health System by over 40%. Automated testing is vital to the clinical safety and user experience of our tools, and we value automation to increase our productivity and to support scaling our systems. In the next year, we are planning a minimum of a 10x increase in the patient population ",google +go-yjUXqDTfLxKTPDEJAAAAAA==,"Field Service Automation Engineer (Washington, PA)",Abbott Laboratories,Not Provided,Not Provided,CONTRACT,True,,,,2025-03-06,Washington,PA,Unknown,https://www.jobs.abbott/us/en/job/31112010/Field-Service-Automation-Engineer-Washington-PA?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic,"Abbott is a global healthcare leader that helps people live more fully at all stages of life. Our portfolio of life-changing technologies spans the spectrum of healthcare, with leading businesses and products in diagnostics, medical devices, nutritionals and branded generic medicines. Our 114,000 colleagues serve people in more than 160 countries. + +About Abbott + +Abbott is a global healthcare leader, creating breakthrough science to improve people’s health. We’re always looking towards the future",google +li-4174156397,Automation Engineer,CPS Recruitment,Not Provided,Not Provided,Not Provided,,,,,2025-03-05,Camillus,NY,Country.WORLDWIDE,https://www.linkedin.com/jobs/view/4174156397,No description available,linkedin +in-6398ade81e15f1be,DevOps Engineer - Automation,Wasabi Technologies,Not Provided,Not Provided,FULL_TIME,True,USD,85932.0,133558.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=6398ade81e15f1be,"At Wasabi, we’re a proven collection of pioneers, visionaries and disruptive doers. We see things differently than our competitors, and we make our mark in the industry by challenging the norm and delivering the unexpected and improbable. We’re a fast\-growing company taking the Cloud Storage industry by storm and recognized as one of the best places to work in Boston. + +Wasabi hot cloud storage is a new class and category of cloud storage, breaking all traditional barriers and boundaries of stor",indeed +in-ebd41cfdc2d17b52,Datacenter Automation Developer,Peraton,Not Provided,Not Provided,FULL_TIME,True,USD,86000.0,138000.0,2025-03-06,Kansas City,MO,US,https://www.indeed.com/viewjob?jk=ebd41cfdc2d17b52,"**About Peraton** + +Peraton is a next\-generation national security company that drives missions of consequence spanning the globe and extending to the farthest reaches of the galaxy. As the world's leading mission capability integrator and transformative enterprise IT provider, we deliver trusted, highly differentiated solutions and technologies to protect our nation and allies. Peraton operates at the critical nexus between traditional and nontraditional threats across all domains: land, sea,",indeed +in-333e2c0e529548b7,Automation Engineer,CentralReach,Not Provided,Not Provided,FULL_TIME,True,USD,73364.0,106411.0,2025-03-06,McLean,VA,US,https://www.indeed.com/viewjob?jk=333e2c0e529548b7,"CentralReach is the \#1 provider of SaaS software solutions for autism and IDD care. Trusted by more than 175,000 users, we enable therapy providers, educators, and employers to scale the way they deliver Applied Behavior Analysis and related therapies with innovative technology, market\-leading industry expertise, and world\-class customer satisfaction. + + +We are looking for a motivated Automation Engineer I with a passion for leveraging AI and automation tools to eliminate tedious tasks and dri",indeed +in-755bcea9b0164261,Automation Engineer,CentralReach,Not Provided,Not Provided,FULL_TIME,True,USD,71429.0,102369.0,2025-03-06,Holmdel,NJ,US,https://www.indeed.com/viewjob?jk=755bcea9b0164261,"CentralReach is the \#1 provider of SaaS software solutions for autism and IDD care. Trusted by more than 175,000 users, we enable therapy providers, educators, and employers to scale the way they deliver Applied Behavior Analysis and related therapies with innovative technology, market\-leading industry expertise, and world\-class customer satisfaction. + + +We are looking for a motivated Automation Engineer I with a passion for leveraging AI and automation tools to eliminate tedious tasks and dri",indeed +in-bbd9ff5650ac11b4,Automation Engineer,CentralReach,Not Provided,Not Provided,FULL_TIME,True,USD,68960.0,97644.0,2025-03-06,Fort Lauderdale,FL,US,https://www.indeed.com/viewjob?jk=bbd9ff5650ac11b4,"CentralReach is the \#1 provider of SaaS software solutions for autism and IDD care. Trusted by more than 175,000 users, we enable therapy providers, educators, and employers to scale the way they deliver Applied Behavior Analysis and related therapies with innovative technology, market\-leading industry expertise, and world\-class customer satisfaction. + + +We are looking for a motivated Automation Engineer I with a passion for leveraging AI and automation tools to eliminate tedious tasks and dri",indeed +in-d89804652f7e1cfa,Automation Engineer,CentralReach,Not Provided,Not Provided,FULL_TIME,True,USD,68262.0,100426.0,2025-03-06,Unknown,Unknown,US,https://www.indeed.com/viewjob?jk=d89804652f7e1cfa,"CentralReach is the \#1 provider of SaaS software solutions for autism and IDD care. Trusted by more than 175,000 users, we enable therapy providers, educators, and employers to scale the way they deliver Applied Behavior Analysis and related therapies with innovative technology, market\-leading industry expertise, and world\-class customer satisfaction. + + +We are looking for a motivated Automation Engineer I with a passion for leveraging AI and automation tools to eliminate tedious tasks and dri",indeed +in-1aabbd8b7ecbfea9,Senior Systems Engineer - Workload Automation and Data Transfer,Enterprise Mobility,Not Provided,Not Provided,FULL_TIME,True,,,,2025-03-06,St. Louis,MO,US,https://www.indeed.com/viewjob?jk=1aabbd8b7ecbfea9,"### **Overview** + + +Enterprise Mobility is the world’s largest car rental operator and an industry leader in mobility and technology. We’re one of the top global travel companies, ranking ahead of many airlines and most cruise lines and hotels. And no matter what transportation challenges our customers face, we have an innovative solution. + +We operate the Enterprise Rent\-A\-Car, National Car Rental and Alamo Rent A Car brands via more than 10,000 fully staffed neighborhood and airport offices,",indeed +in-04b45c3ea29f73be,Software Quality Assurance Test Engineer,California Casualty,Not Provided,Not Provided,FULL_TIME,True,USD,74734.0,152547.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=04b45c3ea29f73be,"We are looking for a **QA Software Test Engineer** who is passionate about delivering high\-quality software through rigorous testing and automation. In this role, you will play a pivotal part in ensuring seamless product releases by defining testing needs, developing automated test suites, and identifying opportunities to enhance our quality assurance processes. Your analytical mindset and keen eye for detail will help mitigate risks, improve test efficiency, and contribute to a culture of cont",indeed +in-d45b27c197a99043,Hammer Call Automation Software Architect/Engineer,Scicom Infrastructure Services,Not Provided,Not Provided,Not Provided,True,USD,127474.0,161348.0,2025-03-06,Atlanta,GA,US,https://www.indeed.com/viewjob?jk=d45b27c197a99043,"\*\*Job Summary:\*\* + + + + + +We are seeking a highly skilled \*\*Hammer Call Automation Software Architect/Engineer\*\* with extensive experience in designing, implementing, and optimizing automated call testing solutions. The ideal candidate will have expertise in both cloud and on\-premise deployments of \*\*Hammer\*\* (formerly from Empirix, now part of Infovista) and a deep understanding of voice and contact center testing, performance monitoring, and automation frameworks. + + + +\*\*Key Respo",indeed +in-e174ed7f47f94c5d,Senior Controls/Automation Engineer,ASML,Not Provided,Not Provided,FULL_TIME,True,USD,132000.0,220000.0,2025-03-06,San Diego,CA,US,https://www.indeed.com/viewjob?jk=e174ed7f47f94c5d,"External Job Description**Introduction** + + +ASML US, including its affiliates and subsidiaries, bring together the most creative minds in science and technology to develop lithography machines that are key to producing faster, cheaper, more energy\-efficient microchips. We design, develop, integrate, market, and service these advanced machines, which enable our customers \- the world’s leading chipmakers \- to reduce the size and increase the functionality of their microchips, which in turn leads",indeed +in-b412673b21710f28,QA Automation Developer,Lightspeed Voice,Not Provided,Not Provided,FULL_TIME,True,USD,,,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=b412673b21710f28,"At Lightspeed Voice, we are a team of tech\-savvy individuals who love technology, communications, and delighting our customers. As a rapidly growing national hosted VoIP provider, we serve businesses across the country with our hosted enterprise\-grade communication platform. + +We are seeking a **QA Automation Developer** to join our dynamic team. This role will focus on ensuring the reliability and performance of our software through robust, automated end\-to\-end testing processes. If you thri",indeed +in-8975466337a053bf,Senior UI Test Automation Engineer - Logistics Sector,"FROM, The Digital Transformation Agency",Not Provided,Not Provided,FULL_TIME,True,USD,55.0,70.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=8975466337a053bf,"**WE DO NOT OFFER SPONSORSHIP FOR THIS ROLE** + +**US CITIZENS/GC HOLDERS ARE ENCOURAGED TO APPLY** + +**Company Overview** + +Join the Innovation Engine!!! Exciting news! Algoworks, a global leader in software product engineering, and FROM, The Digital Transformation Agency, have merged to create a powerhouse of innovation. This strategic union combines Algoworks' deep technical expertise with FROM's cutting\-edge digital transformation strategies, offering unparalleled opportunities for growth and i",indeed +in-c8f2e8e81551a2a4,QA Automation Engineer,MARS Group,Not Provided,Not Provided,CONTRACT,True,USD,55.0,58.0,2025-03-06,Austin,TX,US,https://www.indeed.com/viewjob?jk=c8f2e8e81551a2a4,"**Project Scope:** + +The Software QA Engineer performs advanced and/or supervisory computer systems analysis and team work, administering the daily operations and activities of testing teams within the Quality Assurance (QA) section of IT\-SEDS (Information Technology – Statewide Education Data System). Work involves planning, and analyzing user requirements, procedures, and problems to automate processing or to improve existing systems. + +**Responsibilities:** + +* Analyze user requirements, design",indeed +in-7a2da54fc5ee8693,Program Manager - DC Automation Engineer,BGIS,Real Estate,Not Provided,FULL_TIME,True,USD,90000.0,95000.0,2025-03-05,Unknown,Unknown,US,https://www.indeed.com/viewjob?jk=7a2da54fc5ee8693,"BGIS is currently seeking a **Program Manager\- DC Automation Engineer,** to join the team, **Remote** , **US.** + +BGIS is a leading provider of integrated real estate management services, including facilities management, project management, energy \& sustainability services, strategic workplace consulting, real estate services and capital planning. Its range of solutions, supported by efficient systems, processes and people, enables it to create and optimize places that work for its clients. The",indeed +in-43098dd2bce5459e,Program Manager - DC Automation Engineer,BGIS,Real Estate,Not Provided,FULL_TIME,True,USD,90000.0,95000.0,2025-03-05,Unknown,Unknown,US,https://www.indeed.com/viewjob?jk=43098dd2bce5459e,"BGIS is currently seeking a **Program Manager\- DC Automation Engineer,** to join the team, **Remote** , **US.** + +BGIS is a leading provider of integrated real estate management services, including facilities management, project management, energy \& sustainability services, strategic workplace consulting, real estate services and capital planning. Its range of solutions, supported by efficient systems, processes and people, enables it to create and optimize places that work for its clients. The",indeed +in-221a6916efe3841e,Senior Test Automation Engineer,Kargo,Internet And Software,Not Provided,Not Provided,False,USD,150000.0,180000.0,2025-03-05,New York,NY,US,https://www.indeed.com/viewjob?jk=221a6916efe3841e,"Kargo creates breakthrough cross\-screen ad experiences for the world's leading brands and publishers. Every day, our 600\+ employees bring the power of their creativity and diversity to radically raise the bar on what mobile, CTV, AI, social, and eCommerce can do to wow consumers and build businesses. Now 20 years strong, Kargo has offices in NYC, Chicago, Austin, LA, Dallas, Sydney, Auckland, London and Waterford, Ireland. Humble brag: In 2024, Kargo was recognized as a Best Place to Work by *",indeed +in-7f9dbfb6ee92e47d,Enterprise Identity and Automation Staff Engineer,FanDuel,Internet And Software,Not Provided,Not Provided,False,USD,135000.0,185900.0,2025-03-05,New York,NY,US,https://www.indeed.com/viewjob?jk=7f9dbfb6ee92e47d,"**ABOUT FANDUEL** + + + +FanDuel Group is the premier mobile gaming company in the United States. FanDuel Group consists of a portfolio of leading brands across mobile wagering including: America's \#1 Sportsbook, FanDuel Sportsbook; its leading iGaming platform, FanDuel Casino; the industry's unquestioned leader in horse racing and advance\-deposit wagering, FanDuel Racing; and its daily fantasy sports product. + + + +In addition, FanDuel Group operates FanDuel TV, its broadly distributed linear cable ",indeed +in-136cb49d7f93b44b,QA Automation - JavaScript,Lumenalta,Not Provided,Not Provided,Not Provided,True,USD,21067.0,33482.0,2025-03-05,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=136cb49d7f93b44b,"QA Engineer + + +A career at Lumenalta means the freedom to continue your tech career on your terms. Build exceptional things from wherever you might be. +Experience Remote done Right. + + + +Over 20 years of remote experience, all 500\+ staff are 100% remote and we still grow vibrant relationships, provide exceptional opportunities for career growth while working with stellar clients on ambitious projects + + + +What We're Working On + + + +Enterprise companies turn to us to help them launch innovative digit",indeed +in-48cdd8aee9d61c53,QA Automation Engineer - Senior,Lumenalta,Not Provided,Not Provided,Not Provided,True,USD,45504.0,74447.0,2025-03-05,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=48cdd8aee9d61c53,"QA Engineer + + +A career at Lumenalta means the freedom to continue your tech career on your terms. Build exceptional things from wherever you might be. +Experience Remote done Right. Over 20 years of remote experience, all 500\+ staff are 100% remote and we still grow vibrant relationships, provide exceptional opportunities for career growth while working with stellar clients on ambitious projects + + + +What we're working on + + + +Enterprise companies turn to us to help them launch innovative digital ",indeed +li-4172819875,Client Solutions Manager,Scalero,Not Provided,Not Provided,Not Provided,,,,,2025-03-05,New York,NY,Country.WORLDWIDE,https://www.linkedin.com/jobs/view/4172819875,No description available,linkedin +li-4173923713,BDC Specialist,Naniq Global Logistics,Not Provided,Not Provided,Not Provided,,,,,2025-03-05,Hempstead,NY,Country.WORLDWIDE,https://www.linkedin.com/jobs/view/4173923713,No description available,linkedin +in-92deae9f2920f106,"Account Manager, Buy-Side",Capital Markets Gateway,Not Provided,Not Provided,FULL_TIME,False,USD,175000.0,250000.0,2025-03-07,New York,NY,US,https://www.indeed.com/viewjob?jk=92deae9f2920f106,"**The Company** + +Capital Markets Gateway LLC (CMG) is a financial technology firm, uniquely focused on the equity capital markets (ECM), connecting investors and underwriters via a neutral platform. CMG delivers integrated ECM data and analytics, unrivaled transparency into deal flow, and workflow efficiencies for an otherwise fragmented and inefficient process. Providing a digital system of record for firm\-wide deal activity, CMG helps clients make more timely, better\-informed decisions. La",indeed +in-f68575524f2fb3cc,"Account Manager, Sell-Side",Capital Markets Gateway,Not Provided,Not Provided,FULL_TIME,False,USD,175000.0,250000.0,2025-03-07,New York,NY,US,https://www.indeed.com/viewjob?jk=f68575524f2fb3cc,"**The Company** + +Capital Markets Gateway LLC (CMG) is a financial technology firm, uniquely focused on the equity capital markets (ECM), connecting investors and underwriters via a neutral platform. CMG delivers integrated ECM data and analytics, unrivaled transparency into deal flow, and workflow efficiencies for an otherwise fragmented and inefficient process. Providing a digital system of record for firm\-wide deal activity, CMG helps clients make more timely, better\-informed decisions. La",indeed +in-58aed1341c1de59d,Territory Manager - Greensboro,FujiFilm,Consumer Goods And Services,Not Provided,Not Provided,True,USD,,,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=58aed1341c1de59d,"Position Overview: +**Territory Manager \- Greensboro, NC \- Remote** + + + +As a member of our sales team, you will sell portable ultrasound systems in a consultative, professional and high velocity sales environment. This includes creating primary market demand for FUJIFILM Sonosite products by networking, cold calling, and educating users in hospitals and the physician office market on the value of FUJIFILM Sonosite’s hand\-carried compact ultrasound systems and tools. + +This position requires ",indeed +in-af5dd3179848aa54,"Specialist II, Site Planning",FujiFilm,Consumer Goods And Services,Not Provided,Not Provided,True,USD,82712.0,103660.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=af5dd3179848aa54,"Position Overview: + +This position is intended to assist HCUS Sales representatives and customers identify suitable locations for medical imaging equipment sold by HCUS as well as assisting customers prepare their sites for installation of MR and CT systems; and providing site planning support to all departments as needed. Also serves as a resource providing technical support and leadership in resolving the more difficult siting issues that arise. +Company Overview: + +FUJIFILM Healthcare Americas C",indeed +in-3cf4561c08ee1dac,"Territory Manager, Application and Sales",Kurita America Inc.,Not Provided,Not Provided,FULL_TIME,True,USD,80000.0,90000.0,2025-03-06,Minneapolis,MN,US,https://www.indeed.com/viewjob?jk=3cf4561c08ee1dac,"Overview: + +Kurita America is part of the Kurita Group, one of the leading water solutions providers in the world. Established in 1949, the Kurita Group is comprised of an international network of approximately 8000 employees located in 18 countries. +Located in Minneapolis, MN, Kurita America brings innovations to market through a holistic water management approach, incorporating state\-of\-the art equipment, chemistries, engineering, and services to conserve natural resources for a better, more ",indeed +in-5501bec404f2b652,"Digital Marketing Manager, FS Aftermarket",Joe Johnson Equipment,Not Provided,Not Provided,FULL_TIME,True,USD,71042.0,87055.0,2025-03-06,Monroe,NC,US,https://www.indeed.com/viewjob?jk=5501bec404f2b652,"**WHO WE ARE:** + + + +The Federal Signal (FS) Aftermarket group consists of several business units, each a subsidiary of Federal Signal – a publicly traded company (NYSE: FSS). Together, the FS Aftermarket business units form a cohesive network dedicated to supplying and supporting infrastructure maintenance requirements across North America. + + +FS Aftermarket includes four primary business units: Joe Johnson Equipment (JJE), FS Solutions, FS Depot and Westech. The group includes a diverse ran",indeed +in-e541a420dffb05de,RV General Manager,Blue Compass RV,Not Provided,Not Provided,FULL_TIME,False,USD,150000.0,200000.0,2025-03-06,West Seneca,NY,US,https://www.indeed.com/viewjob?jk=e541a420dffb05de,"**Start your journey with Blue Compass RV as we are looking for an RV General Manager.** + +**The Role**: The RV General Manager is responsible for overseeing the day\-to\-day operations of the dealership, ensuring that all departments function effectively to meet sales, service, and customer satisfaction goals. This role requires a strong leader with experience in the RV industry, a deep understanding of dealership operations, and a proven ability to drive profitability and customer satisfaction.",indeed +in-ed832b1163ee429f,Senior Strategic Alliance Manager,Avalara,Internet And Software,Not Provided,Not Provided,True,USD,134082.0,169777.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=ed832b1163ee429f,"What You'll Do:* **Drive strategic growth by building high\-impact alliances** with top partners like Oracle, SAP, and Workday, contributing directly to Avalara’s revenue goals and market leadership in tax compliance solutions. You'll be part of the Strategic Alliances team, working closely with Sales, Marketing, and Strategic Partner Managers to deliver measurable business outcomes. +* **Shape Avalara’s partner ecosystem through collaboration and innovation**, leveraging Avalara’s industry\-lead",indeed +in-63c212cde52e7574,Sales Account Manager,Smokiez Edibles,Not Provided,Not Provided,FULL_TIME,False,USD,,,2025-03-07,Rochester,NY,US,https://www.indeed.com/viewjob?jk=63c212cde52e7574,"**About the Role:** +We’re seeking a driven and enthusiastic Account Manager to join our team. In this role, you will work closely with cannabis retailers to build strong partnerships and expand our brand’s presence. As the face of our company in your territory, you’ll have the unique opportunity to shape how our brand is represented and grow its influence in the cannabis industry. + +**Key Responsibilities:** + +* Manage sales accounts and develop relationships with cannabis retailers. +* Drive bra",indeed +in-5dabba5e9ca3f287,Sales Account Manager,Smokiez Edibles,Not Provided,Not Provided,FULL_TIME,False,USD,,,2025-03-07,New York,NY,US,https://www.indeed.com/viewjob?jk=5dabba5e9ca3f287,"**About the Role:** +We’re seeking a driven and enthusiastic Account Manager to join our team. In this role, you will work closely with cannabis retailers to build strong partnerships and expand our brand’s presence. As the face of our company in your territory, you’ll have the unique opportunity to shape how our brand is represented and grow its influence in the cannabis industry. + +**Key Responsibilities:** + +* Manage sales accounts and develop relationships with cannabis retailers. +* Drive bra",indeed +in-25bc23529bb68584,Regional Sales Manager -EV Charging Infrastructure,Elevation Proving Grounds,Not Provided,Not Provided,FULL_TIME,True,USD,110000.0,150000.0,2025-03-07,Los Angeles,CA,US,https://www.indeed.com/viewjob?jk=25bc23529bb68584,"Intro + +EV.Careers is currently seeking a full\-time Regional Sales Manager for one of our partners that is a leader in the electric vehicle charging infrastructure industry. In this position, you will be responsible for identifying EV infrastructure opportunities, engaging with decision makers, preparing presentations and proposals, and ultimately closing sales within California and occasionally Arizona and Nevada. + +Responsibilities + +* Develop and build relationships across assigned industry ver",indeed +in-225e21941ff62fea,UNIV-Regional Recruitment and Outreach Manager-College of Health Professions,Medical University of South Carolina,Not Provided,Not Provided,FULL_TIME,True,USD,56210.0,104000.0,2025-03-07,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=225e21941ff62fea,"**Job Description Summary** + + +The Regional Recruitment and Outreach Manager is a strategic and results\-driven professional responsible for leading and executing comprehensive recruitment and outreach initiatives for the MUSC College of Health Professions (CHP). This role involves developing and managing recruitment territories, cultivating partnerships, overseeing outreach campaigns, and driving enrollment growth for online and advanced degree programs. The ideal candidate is an experienced lea",indeed +in-60126a6e362f16ea,UNIV-Regional Recruitment and Outreach Manager-College of Health Professions,Medical University of South Carolina,Not Provided,Not Provided,FULL_TIME,True,USD,56210.0,104000.0,2025-03-07,Unknown,SC,US,https://www.indeed.com/viewjob?jk=60126a6e362f16ea,"**Job Description Summary** + + +The Regional Recruitment and Outreach Manager is a strategic and results\-driven professional responsible for leading and executing comprehensive recruitment and outreach initiatives for the MUSC College of Health Professions (CHP). This role involves developing and managing recruitment territories, cultivating partnerships, overseeing outreach campaigns, and driving enrollment growth for online and advanced degree programs. The ideal candidate is an experienced lea",indeed +in-bca7dcb477fa43e0,Partnership Engagement Manager,HACE,Organization,Not Provided,FULL_TIME,True,USD,50000.0,65000.0,2025-03-07,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=bca7dcb477fa43e0,"**Benefits:** + +* Public Service Loan Forgiveness +* Tuition reimbursement +* 403 B Match +* Paid time off +* Vision insurance +* Dental insurance +* Health insurance +* Tuition assistance + + + +**THE ORGANIZATION** + +HACE is a national non‐profit organization dedicated to the advancement of Latino professionals. Since 1982, HACE has served as a resource for Latinos in the workplace and a source of expertise and insight for employers in attracting, retaining, and developing Latino talent. HACE champio",indeed +in-77320de01395f6cc,Foundation Grants Manager,Calstart,Not Provided,Not Provided,FULL_TIME,True,USD,72000.0,85760.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=77320de01395f6cc,"**Please be aware of recruiting scams!** + +**All legitimate communication from our recruitment team will come from an official** **calstart.org** **email address via email, we will not text you about a role you have not applied to or shown interest in. We will not perform any interviews via text or Zoom chat.** **CALSTART does not ask for any fees or personal information such as social security numbers or bank details during the recruitment process.** **About Us**: + +CALSTART is a mission\-dri",indeed +in-20efe6f2a0a1c58f,Sales Coordinator,Diversified,Not Provided,Not Provided,FULL_TIME,True,USD,29.0,35.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=20efe6f2a0a1c58f,"At Diversified, we don't just follow tech trends \- we set them by leveraging the best in technology and ongoing advisory services to transform businesses. Our comprehensive suite of solutions is engineered to help our clients build connections that make a difference – whether by inspiring viewers, engaging associates, motivating audiences, or streamlining and safeguarding operations. + +Our dedicated teams craft solutions experienced by millions every day including: + +* Delivering the fan expe",indeed +in-b130c715706fda05,Sales Coordinator,Diversified,Not Provided,Not Provided,FULL_TIME,True,USD,29.0,35.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=b130c715706fda05,"At Diversified, we don't just follow tech trends \- we set them by leveraging the best in technology and ongoing advisory services to transform businesses. Our comprehensive suite of solutions is engineered to help our clients build connections that make a difference – whether by inspiring viewers, engaging associates, motivating audiences, or streamlining and safeguarding operations. + +Our dedicated teams craft solutions experienced by millions every day including: + +* Delivering the fan expe",indeed +in-b66c84c7730b9d75,Sales Coordinator,Diversified,Not Provided,Not Provided,FULL_TIME,True,USD,29.0,35.0,2025-03-06,Santa Clara,CA,US,https://www.indeed.com/viewjob?jk=b66c84c7730b9d75,"At Diversified, we don't just follow tech trends \- we set them by leveraging the best in technology and ongoing advisory services to transform businesses. Our comprehensive suite of solutions is engineered to help our clients build connections that make a difference – whether by inspiring viewers, engaging associates, motivating audiences, or streamlining and safeguarding operations. + +Our dedicated teams craft solutions experienced by millions every day including: + +* Delivering the fan expe",indeed +in-ade504136d43511e,Sales Coordinator,Diversified,Not Provided,Not Provided,FULL_TIME,True,USD,29.0,35.0,2025-03-06,Burbank,CA,US,https://www.indeed.com/viewjob?jk=ade504136d43511e,"At Diversified, we don't just follow tech trends \- we set them by leveraging the best in technology and ongoing advisory services to transform businesses. Our comprehensive suite of solutions is engineered to help our clients build connections that make a difference – whether by inspiring viewers, engaging associates, motivating audiences, or streamlining and safeguarding operations. + +Our dedicated teams craft solutions experienced by millions every day including: + +* Delivering the fan expe",indeed +in-4dfbe312a258490d,Recruitment Support Specialist,MBO Partners,Consulting And Business Services,Not Provided,FULL_TIME,True,USD,43978.0,57488.0,2025-03-06,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=4dfbe312a258490d,"**The Role:** RECRUITMENT SUPPORT SPECIALIST + +**Location:** Remote + + + +**Who We Are** + +At MBO we give people the control to do the work they love the way they want. + +We’re leading the future of work by building a best\-in\-class platform for independent professionals and leading enterprise organizations. MBO Partners is a deep job platform that connects and enables independent professionals and micro\-business owners to do business safely and effectively with enterprise organizations. W",indeed +in-936b9db6e36b52fe,Key Account Manager,Abel & Schafer Inc.,Not Provided,Not Provided,FULL_TIME,True,USD,82274.0,104177.0,2025-03-07,Chicago,IL,US,https://www.indeed.com/viewjob?jk=936b9db6e36b52fe,"For almost 130 years, Abel \& Schafer has been producing baked goods in Europe under the KOMPLET brand name. In 1982 the company established a manufacturing facility in Ronkonkoma, NY to serve the fast\-growing markets of the United States, Canada, Mexico, Central/South America, and the Caribbean. To support our continuous growth in these markets, we are currently recruiting a Key Account Manager responsible for Industrial Accounts and Distributors in the Midwest. + + +**Key Job Responsibilities:**",indeed +in-26257eae73452161,Outside Sales Representative,Oldcastle APG,Not Provided,Not Provided,Not Provided,True,USD,67707.0,84747.0,2025-03-06,Nashville,TN,US,https://www.indeed.com/viewjob?jk=26257eae73452161,"Georgia Masonry Supply + + + + + +Job ID: 508114 + + + +Oldcastle APG, a CRH Company, is the leading provider of outdoor living solutions in North America with an award\-winning portfolio that enables customers to Live Well Outside. Inspiring endless possibilities with enduring performance, its collection of premier building products create inviting outdoor spaces where people connect, reflect and recharge. The manufacturer's signature brands include Belgard® and Echelon® hardscape and masonry m",indeed +in-5cc96fbc7a47cea4,Sr. Grants & Partnership Manager,MediaJustice,Not Provided,Not Provided,FULL_TIME,True,USD,95487.0,110884.0,2025-03-07,Remote,Unknown,US,https://www.indeed.com/viewjob?jk=5cc96fbc7a47cea4,"**Sr. Grants \& Partnership Manager** +===================================== + +*MediaJustice (MJ) National Position; Remote. Full\-time, Exempt.* + +**About MediaJustice** +====================== + + +MediaJustice (based in Oakland, CA) is committed to building a powerful front of organizations capable of dismantling the collusion of power inside of the media and tech system and replacing it with people\-centered media and technology that drives us towards human liberation. In order to build our collect",indeed +go-RjfvoZ8JKZrbPn9IAAAAAA==,Program Implementation Specialist,Sodexo,Not Provided,Not Provided,Not Provided,True,,,,2025-03-06,Matthews,NC,Unknown,https://jobs.us.sodexo.com/program-implementation-specialist/job/28924102?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic,"Returning UsersLog Back InRole Overview + +Sodexo is seeking a Program Implementation Specialist + +This is a remote role + +The Program Implementation Specialist will support both internal and external users of Sodexo’s Collaboration portal. The Collaboration Portal is designed to send and share information between Sodexo’s and Entegra’s Supply Management and Finance teams and our Manufacturers, Distributors and Local Suppliers. + +What You'll Do +• Onboard new users to the portal providing an introduct",google +li-4176248259,Implementation Specialist,Pontera,Not Provided,Not Provided,Not Provided,,,,,2025-03-05,New York,NY,Country.WORLDWIDE,https://www.linkedin.com/jobs/view/4176248259,No description available,linkedin +li-4174945622,Implementation Associate,Talkspace,Not Provided,Not Provided,Not Provided,,,,,2025-03-05,New York,NY,Country.WORLDWIDE,https://www.linkedin.com/jobs/view/4174945622,No description available,linkedin +li-4176608586,Sr. EDI Implementation Specialist,Protective Industrial Products,Not Provided,Not Provided,Not Provided,,,,,2025-03-05,Latham,NY,Country.WORLDWIDE,https://www.linkedin.com/jobs/view/4176608586,No description available,linkedin +in-a2464fe811dc43b4,Legal Recruiting Manager,MILBANK LLP,Not Provided,Not Provided,FULL_TIME,False,USD,130000.0,160000.0,2025-03-06,New York,NY,US,https://www.indeed.com/viewjob?jk=a2464fe811dc43b4,"Overview: + +Reporting to the Director of Legal Recruiting, the Legal Recruiting Manager will manage end\-to\-end law school recruiting process, from OCI to summer program, overseeing campus recruiting team. +Responsibilities: +**Law School Recruitment** + +* Manage on\-campus interview planning and implementation, working directly with recruiting partners and campus recruiting team on school\-specific strategies, interviewer selection, reception and dinner planning and budgeting, and thoughtful and",indeed +in-a31d3ebc6e6c1d4b,CRM Specialist,LEAP Staffing Solutions,Health Care,Not Provided,FULL_TIME,True,USD,44743.0,53865.0,2025-03-07,Unknown,Unknown,US,https://www.indeed.com/viewjob?jk=a31d3ebc6e6c1d4b,"**About Us** + + + At Leap, we want YOU to be part of our journey as we transform the home improvement industry! We’ve been recognized as a Top Workplace and placed on Inc. 5000’s Fastest Growing Companies for 3\+ consecutive years. Our complete platform paves the way for a new era in efficiency and professionalism for contractors. Share our passion for innovation and excellence and allow your creativity to meet craftsmanship. Take the Leap today! + + **Position Overview** + + + +We are seeking a dyn",indeed +in-c14c2cbff06915e4,Asset Management - Client Skills Training Associate,JPMorganChase,Not Provided,Not Provided,FULL_TIME,False,USD,85500.0,125000.0,2025-03-07,New York,NY,US,https://www.indeed.com/viewjob?jk=c14c2cbff06915e4,"**JOB DESCRIPTION** + +The Client Skills Training Team is dedicated to designing, developing, and delivering consistent skills and knowledge\-based global training programs for Investment Specialists, Client Advisors, and Client Service professionals. We are part of a the broader Global Product Strategy, Development \& Client Skills Training organization, ideal for someone looking for deep insight and connection to the entire Asset Management business, with interactions with senior stakeholders +",indeed +in-0f81b96eeca40eff,"Energy Management System Developer, Senior Specialist",Southern California Edison,Not Provided,Not Provided,Not Provided,True,USD,117200.0,175800.0,2025-03-06,Alhambra,CA,US,https://www.indeed.com/viewjob?jk=0f81b96eeca40eff,"**Join the Clean Energy Revolution** + + +Become an Energy Management System Developer, Senior Specialist at Southern California Edison (SCE) and build a better tomorrow. In this job, you’ll be responsible for providing hands\-on technical operational maintenance support for Grid Control applications such as Energy Management System (EMS), Centralized Remedial Action Scheme (CRAS), eDNA Historian and PI Historian. You’ll also be responsible for performing hands\-on technical project work and techni",indeed +in-e99a1e0deed5703b,Quality Specialist - Orlando Health Cancer Institute,Orlando Health,Not Provided,Not Provided,FULL_TIME,True,USD,50911.0,67950.0,2025-03-06,Orlando,FL,US,https://www.indeed.com/viewjob?jk=e99a1e0deed5703b,"Position Summary: + +As a top cancer care provider in Florida, Orlando Health Cancer Institute is a comprehensive, multidisciplinary cancer program consisting of six treatment sites and more than 10 practice locations that serve the region’s adult oncology needs. Specializing in more than 200 types of cancer, an expert team of medical professionals providespersonalized care with the most state\-of\-the\-art technologies, such as advanced radiation and proton therapies, and bone marrow transplant a",indeed +in-8aeaa73bce0f8476,High-Risk Case Specialist,Fearless! Hudson Valley Inc.,Not Provided,Not Provided,FULL_TIME,False,USD,22.0,24.0,2025-03-07,Port Jervis,NY,US,https://www.indeed.com/viewjob?jk=8aeaa73bce0f8476,"Position Description: **WHO WE ARE AND WHAT WE DO**Our start as a grassroots, small group of committed individuals began in 1986\. We have expanded and grown to an increasingly bold and empowered agency that advocates for change while supporting survivors in Orange and Sullivan Counties in NY. + +**THE FEARLESS! MISSION**To build an informed, just, and accountable society so all people can experience supportive and safe relationships free from abuse, exploitation, and oppression. We do this thro",indeed +in-188fe491cc5f5d64,Oracle Cloud HCM Functional Configuration Lead - Higher Education,Deloitte,Not Provided,Not Provided,FULL_TIME,False,USD,114000.0,188000.0,2025-03-06,New York,NY,US,https://www.indeed.com/viewjob?jk=188fe491cc5f5d64,"Are you interested in working in a dynamic environment that offers opportunities for professional growth and new responsibilities? Are you interested in helping clients drive alignment with their business, improve organizational and human resource performance and establish a culture focused on adding business value? That is what the new generation of human resource transformation is all about. If you are seeking a role that offers you the opportunity to advise Government and Public Services (GPS",indeed +in-f99fe166c829ed04,Oracle Cloud HCM Functional Configuration Lead - Higher Education,Deloitte,Not Provided,Not Provided,FULL_TIME,False,USD,114000.0,188000.0,2025-03-06,Jericho,NY,US,https://www.indeed.com/viewjob?jk=f99fe166c829ed04,"Are you interested in working in a dynamic environment that offers opportunities for professional growth and new responsibilities? Are you interested in helping clients drive alignment with their business, improve organizational and human resource performance and establish a culture focused on adding business value? That is what the new generation of human resource transformation is all about. If you are seeking a role that offers you the opportunity to advise Government and Public Services (GPS",indeed diff --git a/poetry.lock b/poetry.lock index 92e9bb5..9327e65 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -6,6 +6,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -17,6 +18,7 @@ version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, @@ -30,7 +32,7 @@ typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21.0b1) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -39,6 +41,8 @@ version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false python-versions = ">=3.6" +groups = ["dev"] +markers = "platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -50,6 +54,7 @@ version = "23.1.0" description = "Argon2 for Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, @@ -70,6 +75,7 @@ version = "21.2.0" description = "Low-level CFFI bindings for Argon2" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, @@ -107,6 +113,7 @@ version = "1.3.0" description = "Better dates & times for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -126,6 +133,7 @@ version = "2.4.1" description = "Annotate AST trees with source code positions" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, @@ -135,8 +143,8 @@ files = [ six = ">=1.12.0" [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=1,<2) ; python_version < \"3\"", "astroid (>=2,<4) ; python_version >= \"3\""] +test = ["astroid (>=1,<2) ; python_version < \"3\"", "astroid (>=2,<4) ; python_version >= \"3\"", "pytest"] [[package]] name = "async-lru" @@ -144,6 +152,7 @@ version = "2.0.4" description = "Simple LRU cache for asyncio" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, @@ -158,18 +167,19 @@ version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\"", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\"", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.9\" and python_version < \"3.13\""] [[package]] name = "babel" @@ -177,6 +187,7 @@ version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, @@ -191,6 +202,7 @@ version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" +groups = ["main", "dev"] files = [ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, @@ -212,6 +224,7 @@ version = "24.10.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, @@ -258,6 +271,7 @@ version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, @@ -276,6 +290,7 @@ version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, @@ -287,6 +302,7 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -366,6 +382,7 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -377,6 +394,7 @@ version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["main", "dev"] files = [ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, @@ -491,6 +509,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -505,6 +524,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -516,6 +537,7 @@ version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -533,6 +555,7 @@ version = "1.8.7" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "debugpy-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95fe04a573b8b22896c404365e03f4eda0ce0ba135b7667a1e57bd079793b96b"}, {file = "debugpy-1.8.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:628a11f4b295ffb4141d8242a9bb52b77ad4a63a2ad19217a93be0f77f2c28c9"}, @@ -568,6 +591,7 @@ version = "5.1.1" description = "Decorators for Humans" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -579,6 +603,7 @@ version = "0.7.1" description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -590,6 +615,7 @@ version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -601,6 +627,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -615,13 +643,14 @@ version = "2.1.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] [[package]] name = "fastjsonschema" @@ -629,6 +658,7 @@ version = "2.20.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, @@ -643,6 +673,7 @@ version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, @@ -651,7 +682,7 @@ files = [ [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] [[package]] name = "fqdn" @@ -659,6 +690,7 @@ version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +groups = ["dev"] files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, @@ -670,6 +702,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -681,6 +714,7 @@ version = "1.0.6" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, @@ -702,6 +736,7 @@ version = "0.27.2" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, @@ -715,7 +750,7 @@ idna = "*" sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -727,6 +762,7 @@ version = "2.6.1" description = "File identification library for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, @@ -741,6 +777,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -749,23 +786,13 @@ files = [ [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - [[package]] name = "ipykernel" version = "6.29.5" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -799,6 +826,7 @@ version = "8.28.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" +groups = ["dev"] files = [ {file = "ipython-8.28.0-py3-none-any.whl", hash = "sha256:530ef1e7bb693724d3cdc37287c80b07ad9b25986c007a53aa1857272dac3f35"}, {file = "ipython-8.28.0.tar.gz", hash = "sha256:0d0d15ca1e01faeb868ef56bc7ee5a0de5bd66885735682e8a322ae289a13d1a"}, @@ -820,7 +848,7 @@ typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli ; python_version < \"3.11\"", "typing-extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -837,6 +865,7 @@ version = "8.1.5" description = "Jupyter interactive widgets" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, @@ -858,6 +887,7 @@ version = "20.11.0" description = "Operations with ISO 8601 durations" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -872,6 +902,7 @@ version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, @@ -891,6 +922,7 @@ version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, @@ -908,6 +940,7 @@ version = "0.9.25" description = "A Python implementation of the JSON5 data format." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, @@ -919,6 +952,7 @@ version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -930,6 +964,7 @@ version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -959,6 +994,7 @@ version = "2024.10.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, @@ -973,6 +1009,7 @@ version = "1.1.1" description = "Jupyter metapackage. Install all the Jupyter components in one go." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, @@ -992,6 +1029,7 @@ version = "8.6.3" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1006,7 +1044,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -1014,6 +1052,7 @@ version = "6.6.3" description = "Jupyter terminal console" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, @@ -1038,6 +1077,7 @@ version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -1058,6 +1098,7 @@ version = "0.10.0" description = "Jupyter Event System library" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, @@ -1083,6 +1124,7 @@ version = "2.2.5" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, @@ -1097,6 +1139,7 @@ version = "2.14.2" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, @@ -1133,6 +1176,7 @@ version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1152,6 +1196,7 @@ version = "4.2.5" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab-4.2.5-py3-none-any.whl", hash = "sha256:73b6e0775d41a9fee7ee756c80f58a6bed4040869ccc21411dc559818874d321"}, {file = "jupyterlab-4.2.5.tar.gz", hash = "sha256:ae7f3a1b8cb88b4f55009ce79fa7c06f99d70cd63601ee4aa91815d054f46f75"}, @@ -1186,6 +1231,7 @@ version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1197,6 +1243,7 @@ version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, @@ -1222,6 +1269,7 @@ version = "3.0.13" description = "Jupyter interactive widgets for JupyterLab" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, @@ -1233,6 +1281,7 @@ version = "0.13.1" description = "Convert HTML to markdown." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "markdownify-0.13.1-py3-none-any.whl", hash = "sha256:1d181d43d20902bcc69d7be85b5316ed174d0dda72ff56e14ae4c95a4a407d22"}, {file = "markdownify-0.13.1.tar.gz", hash = "sha256:ab257f9e6bd4075118828a28c9d02f8a4bfeb7421f558834aa79b2dfeb32a098"}, @@ -1248,6 +1297,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1318,6 +1368,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -1332,6 +1383,7 @@ version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, @@ -1343,6 +1395,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -1354,6 +1407,7 @@ version = "0.10.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false python-versions = ">=3.8.0" +groups = ["dev"] files = [ {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, @@ -1376,6 +1430,7 @@ version = "7.16.4" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, @@ -1413,6 +1468,7 @@ version = "5.10.4" description = "The Jupyter Notebook format" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -1434,6 +1490,7 @@ version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -1445,6 +1502,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -1456,6 +1514,7 @@ version = "7.2.2" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "notebook-7.2.2-py3-none-any.whl", hash = "sha256:c89264081f671bc02eec0ed470a627ed791b9156cad9285226b31611d3e9fe1c"}, {file = "notebook-7.2.2.tar.gz", hash = "sha256:2ef07d4220421623ad3fe88118d687bc0450055570cdd160814a59cf3a1c516e"}, @@ -1471,7 +1530,7 @@ tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -1479,6 +1538,7 @@ version = "0.2.4" description = "A shim layer for notebook traits and config" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -1496,6 +1556,7 @@ version = "1.26.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, @@ -1541,6 +1602,7 @@ version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -1552,6 +1614,7 @@ version = "24.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, @@ -1563,6 +1626,7 @@ version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, @@ -1649,6 +1713,7 @@ version = "1.5.1" description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -1660,6 +1725,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -1675,6 +1741,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -1686,6 +1753,8 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -1700,6 +1769,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -1710,27 +1780,13 @@ docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-a test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] type = ["mypy (>=1.11.2)"] -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - [[package]] name = "pre-commit" version = "4.0.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, @@ -1749,6 +1805,7 @@ version = "0.21.0" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166"}, {file = "prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e"}, @@ -1763,6 +1820,7 @@ version = "3.0.48" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" +groups = ["dev"] files = [ {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, @@ -1777,6 +1835,7 @@ version = "6.1.0" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] files = [ {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, @@ -1807,6 +1866,8 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" +groups = ["dev"] +markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -1818,6 +1879,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -1832,6 +1894,7 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -1843,6 +1906,7 @@ version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, @@ -1858,7 +1922,7 @@ typing-extensions = [ [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and sys_platform == \"win32\""] [[package]] name = "pydantic-core" @@ -1866,6 +1930,7 @@ version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, @@ -1967,6 +2032,7 @@ version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, @@ -1975,34 +2041,13 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] -[[package]] -name = "pytest" -version = "7.4.4" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - [[package]] name = "python-dateutil" version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -2017,6 +2062,7 @@ version = "2.0.7" description = "A python library adding a json log formatter" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, @@ -2028,6 +2074,7 @@ version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, @@ -2039,6 +2086,8 @@ version = "308" description = "Python for Window Extensions" optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -2066,6 +2115,8 @@ version = "2.0.14" description = "Pseudo terminal support for Windows from Python." optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "os_name == \"nt\"" files = [ {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, @@ -2081,6 +2132,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -2143,6 +2195,7 @@ version = "26.2.0" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, @@ -2264,6 +2317,7 @@ version = "0.35.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, @@ -2279,6 +2333,7 @@ version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, @@ -2382,6 +2437,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -2403,6 +2459,7 @@ version = "0.1.4" description = "A pure python RFC3339 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -2417,6 +2474,7 @@ version = "0.1.1" description = "Pure python rfc3986 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, @@ -2428,6 +2486,7 @@ version = "0.20.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, @@ -2540,15 +2599,16 @@ version = "1.8.3" description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["dev"] files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, ] [package.extras] -nativelib = ["pyobjc-framework-Cocoa", "pywin32"] -objc = ["pyobjc-framework-Cocoa"] -win32 = ["pywin32"] +nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] +objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] +win32 = ["pywin32 ; sys_platform == \"win32\""] [[package]] name = "setuptools" @@ -2556,19 +2616,20 @@ version = "75.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.5.2) ; sys_platform != \"cygwin\""] +core = ["importlib-metadata (>=6) ; python_version < \"3.10\"", "importlib-resources (>=5.10.2) ; python_version < \"3.9\"", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.11.*)", "pytest-mypy"] [[package]] name = "six" @@ -2576,6 +2637,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2587,6 +2649,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -2598,6 +2661,7 @@ version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, @@ -2609,6 +2673,7 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -2628,6 +2693,7 @@ version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -2649,6 +2715,7 @@ version = "1.3.0" description = "A tiny CSS parser" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, @@ -2667,6 +2734,7 @@ version = "1.0.1" description = "Advanced Python HTTP Client." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "tls_client-1.0.1-py3-none-any.whl", hash = "sha256:2f8915c0642c2226c9e33120072a2af082812f6310d32f4ea4da322db7d3bb1c"}, {file = "tls_client-1.0.1.tar.gz", hash = "sha256:dad797f3412bb713606e0765d489f547ffb580c5ffdb74aed47a183ce8505ff5"}, @@ -2678,6 +2746,8 @@ version = "2.0.2" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, @@ -2689,6 +2759,7 @@ version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, @@ -2709,6 +2780,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -2724,6 +2796,7 @@ version = "2.9.0.20241003" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, @@ -2735,10 +2808,12 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +markers = {dev = "python_version <= \"3.11\""} [[package]] name = "tzdata" @@ -2746,6 +2821,7 @@ version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, @@ -2757,6 +2833,7 @@ version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -2771,13 +2848,14 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -2788,6 +2866,7 @@ version = "20.27.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, @@ -2800,7 +2879,7 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] [[package]] name = "wcwidth" @@ -2808,6 +2887,7 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -2819,6 +2899,7 @@ version = "24.8.0" description = "A library for working with the color formats defined by HTML and CSS." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, @@ -2834,6 +2915,7 @@ version = "0.5.1" description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -2845,6 +2927,7 @@ version = "1.8.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, @@ -2861,12 +2944,13 @@ version = "4.0.13" description = "Jupyter interactive widgets for Jupyter Notebook" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, ] [metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "57169347d2ce0ff19c4d3024ce000651bb3a816e36f454618f480741094fb4a7" +lock-version = "2.1" +python-versions = "^3.10 || ^3.12" +content-hash = "27df098ed41a052afd6b6672dd06901c8426b8086d3702f94aec3777b12793f2" diff --git a/pyproject.toml b/pyproject.toml index 1afce65..96f0c1f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ include = "jobspy" line-length = 88 [tool.poetry.dependencies] -python = "^3.10" +python = "^3.10 || ^3.12" requests = "^2.31.0" beautifulsoup4 = "^4.12.2" pandas = "^2.1.0"