-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.py
More file actions
208 lines (173 loc) · 7.99 KB
/
setup.py
File metadata and controls
208 lines (173 loc) · 7.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
"""Setup script for the funstrings package.
This file contains all the package metadata required for distributing and installing
the package using pip. It follows the setuptools conventions for Python packaging.
For beginners and students:
- This file is the standard way to package Python code for distribution
- It defines metadata about your package (name, version, author, etc.)
- It specifies dependencies that your package needs to run
- It configures how your package should be installed
To use this file:
1. Install your package locally: pip install -e .
2. Build distribution files: python setup.py sdist bdist_wheel
3. Upload to PyPI: python -m twine upload dist/*
Learn more about Python packaging at:
https://packaging.python.org/tutorials/packaging-projects/
"""
# Import required functions from setuptools
from setuptools import setup, find_packages
# Read the contents of README.md file to use as the long description
# This will appear on the PyPI project page
with open("README.md", encoding="utf-8") as f:
long_description = f.read()
# Call the setup function with our package metadata
setup(
#############################################
# BASIC PACKAGE INFORMATION
#############################################
# Package name - this is how users will refer to your package when installing
# Example: pip install funstrings
name="funstrings",
# Version number - follow semantic versioning (MAJOR.MINOR.PATCH)
version="0.1.2",
#############################################
# PACKAGE DESCRIPTION
#############################################
# Short description (appears in PyPI search results)
description="A Python package for string manipulation and analysis, and to play with strings",
# Long description (appears on PyPI project page)
# We're using the content from README.md
long_description=long_description,
# Specify the format of the long description
# Options include: text/markdown, text/x-rst, text/plain
long_description_content_type="text/markdown",
#############################################
# LINKS AND CONTACT INFORMATION
#############################################
# Homepage URL for your project
# This typically points to your GitHub repository or documentation
url="https://github.com/nilkanth02/funstrings",
# Direct download URL for a specific version (optional)
download_url="https://github.com/nilkanth02/funstrings/archive/v0.1.2.tar.gz",
# Author information
author="Nilkanth Ahire",
author_email="nilkanth8747@gmail.com",
#############################################
# LICENSE INFORMATION
#############################################
# License under which your package is distributed
# Common licenses include: MIT, BSD, Apache, GPL
# Make sure to include a LICENSE file in your package
license="MIT",
#############################################
# CLASSIFIERS
#############################################
# Classifiers help users find your project on PyPI
# Full list: https://pypi.org/classifiers/
classifiers=[
# Development status
# Options: 1-Planning, 2-Pre-Alpha, 3-Alpha, 4-Beta, 5-Production/Stable, 6-Mature, 7-Inactive
"Development Status :: 3 - Alpha",
# Intended audience
"Intended Audience :: Developers",
"Intended Audience :: Education", # Added for students
"Intended Audience :: Science/Research", # Added for academic use
# License (should match the license field above)
"License :: OSI Approved :: MIT License",
# Natural language support
"Natural Language :: English",
# Operating systems
"Operating System :: OS Independent", # If your package works on any OS
# Python versions supported
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
# Topic
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing :: General",
"Topic :: Education :: Computer Aided Instruction (CAI)", # Added for educational use
],
#############################################
# KEYWORDS
#############################################
# Keywords help users find your package when searching on PyPI
keywords="string, text, manipulation, utility, education, learning, beginner, student, playing, fun, easy_working",
#############################################
# PACKAGE DISCOVERY AND STRUCTURE
#############################################
# find_packages() automatically finds all packages and subpackages
# by looking for __init__.py files in directories
packages=find_packages(),
#############################################
# PYTHON VERSION REQUIREMENTS
#############################################
# Specify which Python versions your package supports
python_requires=">=3.6",
#############################################
# DEPENDENCIES
#############################################
# List packages that your package depends on to run
# These will be installed automatically when your package is installed
install_requires=[
# Example: "requests>=2.25.1",
# Example: "numpy>=1.20.0",
],
#############################################
# OPTIONAL DEPENDENCIES
#############################################
# Define groups of extra dependencies that users can install if needed
# Example usage: pip install funstrings[dev]
extras_require={
# Dependencies for development and testing
"dev": [
"pytest>=6.0", # Testing framework
"pytest-cov", # Test coverage reporting
"flake8", # Code linting
"black", # Code formatting
"sphinx", # Documentation generator
"sphinx-rtd-theme", # Documentation theme
],
# Dependencies for educational purposes
"edu": [
"jupyter", # For interactive notebooks
"matplotlib", # For visualizations
],
},
#############################################
# ENTRY POINTS
#############################################
# Define command-line scripts that will be installed with your package
# Format: script_name=package.module:function
entry_points={
"console_scripts": [
# This creates a 'funstrings' command that runs the main() function in __main__.py
"funstrings=funstrings.__main__:main",
],
},
#############################################
# PACKAGE DATA
#############################################
# Include non-Python files in your package
# This requires a MANIFEST.in file to specify which files to include
include_package_data=True,
#############################################
# INSTALLATION OPTIONS
#############################################
# If False, package will be installed as a directory rather than a zip file
# This is usually better for debugging and development
zip_safe=False,
#############################################
# ADDITIONAL PROJECT URLS
#############################################
# Additional URLs that will appear on your PyPI project page
project_urls={
"Bug Tracker": "https://github.com/nilkanth02/funstrings/issues",
"Documentation": "https://github.com/nilkanth02/funstrings",
"Source Code": "https://github.com/nilkanth02/funstrings",
"Examples": "https://github.com/nilkanth02/funstrings/tree/main/examples",
"Educational Resources": "https://github.com/nilkanth02/funstrings/tree/main/tutorials",
"Changelog": "https://github.com/nilkanth02/funstrings/blob/main/CHANGELOG.md",
},
)