From 949cd9008d33eeffd1c0f8d7d5f79ab2cee0858b Mon Sep 17 00:00:00 2001 From: Jakub Balinski <31112335+balins@users.noreply.github.com> Date: Sun, 1 Sep 2024 10:02:00 +0200 Subject: [PATCH] fix docs --- doc/_static/img/index_api.svg | 97 --------- doc/_static/img/index_examples.svg | 76 ------- doc/_static/img/index_getting_started.svg | 66 ------ doc/_static/img/index_user_guide.svg | 67 ------ doc/api.rst | 25 +-- doc/conf.py | 16 +- doc/index.rst | 95 +-------- doc/quick_start.rst | 181 ---------------- doc/user_guide.rst | 180 ---------------- examples/README.txt | 2 +- examples/plot_classifier.py | 2 +- fsvm/_fuzzy_svc.py | 5 +- venv/bin/Activate.ps1 | 247 ++++++++++++++++++++++ venv/bin/activate | 70 ++++++ venv/bin/activate.csh | 27 +++ venv/bin/activate.fish | 69 ++++++ venv/bin/docutils | 8 + venv/bin/keyring | 8 + venv/bin/markdown-it | 8 + venv/bin/normalizer | 8 + venv/bin/pip | 8 + venv/bin/pip3 | 8 + venv/bin/pip3.12 | 8 + venv/bin/pkginfo | 8 + venv/bin/pygmentize | 8 + venv/bin/pyproject-build | 8 + venv/bin/python | 1 + venv/bin/python3 | 1 + venv/bin/python3.12 | 1 + venv/bin/rst2html | 8 + venv/bin/rst2html4 | 8 + venv/bin/rst2html5 | 8 + venv/bin/rst2latex | 8 + venv/bin/rst2man | 8 + venv/bin/rst2odt | 8 + venv/bin/rst2pseudoxml | 8 + venv/bin/rst2s5 | 8 + venv/bin/rst2xetex | 8 + venv/bin/rst2xml | 8 + venv/bin/twine | 8 + venv/pyvenv.cfg | 5 + 41 files changed, 612 insertions(+), 789 deletions(-) delete mode 100644 doc/_static/img/index_api.svg delete mode 100644 doc/_static/img/index_examples.svg delete mode 100644 doc/_static/img/index_getting_started.svg delete mode 100644 doc/_static/img/index_user_guide.svg delete mode 100644 doc/quick_start.rst delete mode 100644 doc/user_guide.rst create mode 100644 venv/bin/Activate.ps1 create mode 100644 venv/bin/activate create mode 100644 venv/bin/activate.csh create mode 100644 venv/bin/activate.fish create mode 100755 venv/bin/docutils create mode 100755 venv/bin/keyring create mode 100755 venv/bin/markdown-it create mode 100755 venv/bin/normalizer create mode 100755 venv/bin/pip create mode 100755 venv/bin/pip3 create mode 100755 venv/bin/pip3.12 create mode 100755 venv/bin/pkginfo create mode 100755 venv/bin/pygmentize create mode 100755 venv/bin/pyproject-build create mode 120000 venv/bin/python create mode 120000 venv/bin/python3 create mode 120000 venv/bin/python3.12 create mode 100755 venv/bin/rst2html create mode 100755 venv/bin/rst2html4 create mode 100755 venv/bin/rst2html5 create mode 100755 venv/bin/rst2latex create mode 100755 venv/bin/rst2man create mode 100755 venv/bin/rst2odt create mode 100755 venv/bin/rst2pseudoxml create mode 100755 venv/bin/rst2s5 create mode 100755 venv/bin/rst2xetex create mode 100755 venv/bin/rst2xml create mode 100755 venv/bin/twine create mode 100644 venv/pyvenv.cfg diff --git a/doc/_static/img/index_api.svg b/doc/_static/img/index_api.svg deleted file mode 100644 index 69f7ba1..0000000 --- a/doc/_static/img/index_api.svg +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/doc/_static/img/index_examples.svg b/doc/_static/img/index_examples.svg deleted file mode 100644 index de3d902..0000000 --- a/doc/_static/img/index_examples.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/doc/_static/img/index_getting_started.svg b/doc/_static/img/index_getting_started.svg deleted file mode 100644 index 2d36622..0000000 --- a/doc/_static/img/index_getting_started.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/doc/_static/img/index_user_guide.svg b/doc/_static/img/index_user_guide.svg deleted file mode 100644 index bd17053..0000000 --- a/doc/_static/img/index_user_guide.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/doc/api.rst b/doc/api.rst index 768ab5c..17e99f8 100644 --- a/doc/api.rst +++ b/doc/api.rst @@ -4,37 +4,18 @@ API Reference ############# -This is an example on how to document the API of your own project. +API reference for the `fsvm` package. .. currentmodule:: fsvm -Estimator +FuzzySVC ========= .. autosummary:: :toctree: generated/ :template: class.rst - TemplateEstimator - -Transformer -=========== - -.. autosummary:: - :toctree: generated/ - :template: class.rst - - TemplateTransformer - -Predictor -========= - -.. autosummary:: - :toctree: generated/ - :template: class.rst - - TemplateClassifier - + FuzzySVC Utilities ========= diff --git a/doc/conf.py b/doc/conf.py index dec5ab9..305872a 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -10,9 +10,9 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information from importlib.metadata import version as get_version -project = "Scikit-learn Project Template" -copyright = "2016, V. Birodkar" -author = "V. Birodkar" +project = "fsvm" +copyright = "2024, J. Baliński" +author = "J. Baliński" release = get_version("fsvm") version = ".".join(release.split(".")[:3]) @@ -51,24 +51,22 @@ "css/fsvm.css", ] html_sidebars = { - "quick_start": [], - "user_guide": [], + "api": [], "auto_examples/index": [], } html_theme_options = { "external_links": [], "github_url": "https://github.com/balins/fsvm", - # "twitter_url": "https://twitter.com/pandas_dev", "use_edit_page_button": True, "show_toc_level": 1, # "navbar_align": "right", # For testing that the navbar items align properly } html_context = { - "github_user": "scikit-learn-contrib", - "github_repo": "project-template", - "github_version": "master", + "github_user": "balins", + "github_repo": "fsvm", + "github_version": "main", "doc_path": "doc", } diff --git a/doc/index.rst b/doc/index.rst index 2c66c59..3448501 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,4 +1,4 @@ -.. project-template documentation master file, created by +.. fsvm documentation master file, created by sphinx-quickstart on Mon Jan 18 14:44:12 2016. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. @@ -6,103 +6,22 @@ :notoc: ############################################# -Project template for `scikit-learn` extension +Fuzzy Support Vector Machine (FSVM) ############################################# -**Date**: |today| **Version**: |version| +**Date**: 31.08.2024 **Version**: 0.1.0 **Useful links**: -`Source Repository `__ | -`Issues & Ideas `__ | - -This is the documentation for the `project-template` to help at extending -`scikit-learn`. It provides some information on how to build your own custom -`scikit-learn` compatible estimators as well as a template to package them. - - -.. grid:: 1 2 2 2 - :gutter: 4 - :padding: 2 2 0 0 - :class-container: sd-text-center - - .. grid-item-card:: Getting started - :img-top: _static/img/index_getting_started.svg - :class-card: intro-card - :shadow: md - - Information regarding this template and how to modify it for your own project. - - +++ - - .. button-ref:: quick_start - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - To the getting started guideline - - .. grid-item-card:: User guide - :img-top: _static/img/index_user_guide.svg - :class-card: intro-card - :shadow: md - - An example of narrative documentation. Here, we will explain how to create your - own `scikit-learn` estimator. - - +++ - - .. button-ref:: user_guide - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - To the user guide - - .. grid-item-card:: API reference - :img-top: _static/img/index_api.svg - :class-card: intro-card - :shadow: md - - An example of API documentation. This is an example how to use `sphinx` to - automatically generate reference API page. - - +++ - - .. button-ref:: api - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - To the reference guide - - .. grid-item-card:: Examples - :img-top: _static/img/index_examples.svg - :class-card: intro-card - :shadow: md - - A set of examples. It complements the User Guide and it is the right place to - show how to use your compatible estimator. - - +++ - - .. button-ref:: general_examples - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - To the gallery of examples +`Source Repository `__ | +`Issues & Ideas `__ | +This is the documentation for the `fsvm`, a package providing a Fuzzy Support Vector Machine +implementation compatible with `scikit-learn`. .. toctree:: :maxdepth: 3 :hidden: :titlesonly: - quick_start - user_guide api auto_examples/index diff --git a/doc/quick_start.rst b/doc/quick_start.rst deleted file mode 100644 index b624f09..0000000 --- a/doc/quick_start.rst +++ /dev/null @@ -1,181 +0,0 @@ -.. _quick_start: - -############### -Getting started -############### - -This package serves as a skeleton package aiding at developing compatible -scikit-learn contribution. - -Creating your own scikit-learn contribution package -=================================================== - -Download and setup your repository ----------------------------------- - -To create your package, you need to clone the ``project-template`` repository: - -.. prompt:: bash $ - - git clone https://github.com/scikit-learn-contrib/project-template.git - -Before to reinitialize your git repository, you need to make the following -changes. Replace all occurrences of ``skltemplate``, ``sklearn-template``, or -``project-template`` with the name of you own project. You can find all the -occurrences using the following command: - -.. prompt:: bash $ - - git grep skltemplate - git grep sklearn-template - git grep project-template - -To remove the history of the template package, you need to remove the `.git` -directory: - -.. prompt:: bash $ - - rm -rf .git - -Then, you need to initialize your new git repository: - -.. prompt:: bash $ - - git init - git add . - git commit -m 'Initial commit' - -Finally, you create an online repository on GitHub and push your code online: - -.. prompt:: bash $ - - git remote add origin https://github.com/your_remote/your_contribution.git - git push origin main - -Develop your own scikit-learn estimators ----------------------------------------- - -.. _check_estimator: http://scikit-learn.org/stable/modules/generated/sklearn.utils.estimator_checks.check_estimator.html#sklearn.utils.estimator_checks.check_estimator -.. _`Contributor's Guide`: http://scikit-learn.org/stable/developers/ -.. _PEP8: https://www.python.org/dev/peps/pep-0008/ -.. _PEP257: https://www.python.org/dev/peps/pep-0257/ -.. _NumPyDoc: https://github.com/numpy/numpydoc -.. _doctests: https://docs.python.org/3/library/doctest.html - -You can modify the source files as you want. However, your custom estimators -need to pass the check_estimator_ test to be scikit-learn compatible. We provide a -file called `test_common.py` where we run the checks on our custom estimators. - -You can refer to the :ref:`User Guide ` to help you create a compatible -scikit-learn estimator. - -In any case, developers should endeavor to adhere to scikit-learn's -`Contributor's Guide`_ which promotes the use of: - -* algorithm-specific unit tests, in addition to ``check_estimator``'s common - tests; -* PEP8_-compliant code; -* a clearly documented API using NumpyDoc_ and PEP257_-compliant docstrings; -* references to relevant scientific literature in standard citation formats; -* doctests_ to provide succinct usage examples; -* standalone examples to illustrate the usage, model visualisation, and - benefits/benchmarks of particular algorithms; -* efficient code when the need for optimization is supported by benchmarks. - -Managing your local and continuous integration environment ----------------------------------------------------------- - -Here, we set up for you an repository that uses `pixi`. The `pixi.toml` file defines -the packages and tasks to be run that we will present below. You can refer to the -following documentation link to install `pixi`: https://pixi.sh/latest/#installation - -Once done, you can refer to the documentation to get started but we provide the -command below to interact with the main task requested to develop your package. - -Edit the documentation ----------------------- - -.. _Sphinx: http://www.sphinx-doc.org/en/stable/ - -The documentation is created using Sphinx_. In addition, the examples are -created using ``sphinx-gallery``. Therefore, to generate locally the -documentation, you can leverage the following `pixi` task: - -.. prompt:: bash $ - - pixi run build-doc - -The documentation is made of: - -* a home page, ``doc/index.rst``; -* an API documentation, ``doc/api.rst`` in which you should add all public - objects for which the docstring should be exposed publicly. -* a User Guide documentation, ``doc/user_guide.rst``, containing the narrative - documentation of your package, to give as much intuition as possible to your - users. -* examples which are created in the `examples/` folder. Each example - illustrates some usage of the package. the example file name should start by - `plot_*.py`. - -Local testing -------------- - -To run the tests locally, you can use the following command: - -.. prompt:: bash $ - - pixi run test - -It will use `pytest` under the hood to run the package tests. - -In addition, you have a linter task to check the code consistency in terms of style: - -.. prompt:: bash $ - - pixi run lint - -Activating the development environment --------------------------------------- - -In the case that you don't want to use the `pixi run` commands and directly interact -with the usual python tools, you can activate the development environment: - -.. prompt:: bash $ - - pixi shell -e dev - -This will activate an environment containing the dependencies needed to run the linters, -tests, and build the documentation. So for instance, you can run the tests with: - -.. prompt:: bash $ - - pytest -vsl skltemplate - -In this case, you can even use pre-commit before using git. You will need to initialize -it with: - -.. prompt:: bash $ - - pre-commit install - -Setup the continuous integration --------------------------------- - -The project template already contains configuration files of the continuous -integration system. It leverage the above pixi commands and run on GitHub Actions. -In short, it will: - -* run the tests on the different platforms (Linux, MacOS, Windows) and upload the - coverage report to codecov.io; -* check the code style (linter); -* build the documentation and deploy it automatically on GitHub Pages. - -Publish your package -==================== - -.. _PyPi: https://packaging.python.org/tutorials/packaging-projects/ -.. _conda-forge: https://conda-forge.org/ - -You can make your package available through PyPi_ and conda-forge_. Refer to -the associated documentation to be able to upload your packages such that -it will be installable with ``pip`` and ``conda``. diff --git a/doc/user_guide.rst b/doc/user_guide.rst deleted file mode 100644 index 527d4c6..0000000 --- a/doc/user_guide.rst +++ /dev/null @@ -1,180 +0,0 @@ -.. title:: User guide : contents - -.. _user_guide: - -========== -User Guide -========== - -Estimator ---------- - -The central piece of transformer, regressor, and classifier is -:class:`sklearn.base.BaseEstimator`. All estimators in scikit-learn are derived -from this class. In more details, this base class enables to set and get -parameters of the estimator. It can be imported as:: - - >>> from sklearn.base import BaseEstimator - -Once imported, you can create a class which inherate from this base class:: - - >>> class MyOwnEstimator(BaseEstimator): - ... pass - -Transformer ------------ - -Transformers are scikit-learn estimators which implement a ``transform`` method. -The use case is the following: - -* at ``fit``, some parameters can be learned from ``X`` and ``y``; -* at ``transform``, `X` will be transformed, using the parameters learned - during ``fit``. - -.. _mixin: https://en.wikipedia.org/wiki/Mixin - -In addition, scikit-learn provides a -mixin_, i.e. :class:`sklearn.base.TransformerMixin`, which -implement the combination of ``fit`` and ``transform`` called ``fit_transform``. - -One can import the mixin class as:: - - >>> from sklearn.base import TransformerMixin - -Therefore, when creating a transformer, you need to create a class which -inherits from both :class:`sklearn.base.BaseEstimator` and -:class:`sklearn.base.TransformerMixin`. The scikit-learn API imposed ``fit`` to -**return ``self``**. The reason is that it allows to pipeline ``fit`` and -``transform`` imposed by the :class:`sklearn.base.TransformerMixin`. The -``fit`` method is expected to have ``X`` and ``y`` as inputs. Note that -``transform`` takes only ``X`` as input and is expected to return the -transformed version of ``X``:: - - >>> class MyOwnTransformer(TransformerMixin, BaseEstimator): - ... def fit(self, X, y=None): - ... return self - ... def transform(self, X): - ... return X - -We build a basic example to show that our :class:`MyOwnTransformer` is working -within a scikit-learn ``pipeline``:: - - >>> from sklearn.datasets import load_iris - >>> from sklearn.pipeline import make_pipeline - >>> from sklearn.linear_model import LogisticRegression - >>> X, y = load_iris(return_X_y=True) - >>> pipe = make_pipeline(MyOwnTransformer(), - ... LogisticRegression(random_state=10, - ... solver='lbfgs')) - >>> pipe.fit(X, y) # doctest: +ELLIPSIS - Pipeline(...) - >>> pipe.predict(X) # doctest: +ELLIPSIS - array([...]) - -Predictor ---------- - -Regressor -~~~~~~~~~ - -Similarly, regressors are scikit-learn estimators which implement a ``predict`` -method. The use case is the following: - -* at ``fit``, some parameters can be learned from ``X`` and ``y``; -* at ``predict``, predictions will be computed using ``X`` using the parameters - learned during ``fit``. - -In addition, scikit-learn provides a mixin_, i.e. -:class:`sklearn.base.RegressorMixin`, which implements the ``score`` method -which computes the :math:`R^2` score of the predictions. - -One can import the mixin as:: - - >>> from sklearn.base import RegressorMixin - -Therefore, we create a regressor, :class:`MyOwnRegressor` which inherits from -both :class:`sklearn.base.BaseEstimator` and -:class:`sklearn.base.RegressorMixin`. The method ``fit`` gets ``X`` and ``y`` -as input and should return ``self``. It should implement the ``predict`` -function which should output the predictions of your regressor:: - - >>> import numpy as np - >>> class MyOwnRegressor(RegressorMixin, BaseEstimator): - ... def fit(self, X, y): - ... return self - ... def predict(self, X): - ... return np.mean(X, axis=1) - -We illustrate that this regressor is working within a scikit-learn pipeline:: - - >>> from sklearn.datasets import load_diabetes - >>> X, y = load_diabetes(return_X_y=True) - >>> pipe = make_pipeline(MyOwnTransformer(), MyOwnRegressor()) - >>> pipe.fit(X, y) # doctest: +ELLIPSIS - Pipeline(...) - >>> pipe.predict(X) # doctest: +ELLIPSIS - array([...]) - -Since we inherit from the :class:`sklearn.base.RegressorMixin`, we can call -the ``score`` method which will return the :math:`R^2` score:: - - >>> pipe.score(X, y) # doctest: +ELLIPSIS - -3.9... - -Classifier -~~~~~~~~~~ - -Similarly to regressors, classifiers implement ``predict``. In addition, they -output the probabilities of the prediction using the ``predict_proba`` method: - -* at ``fit``, some parameters can be learned from ``X`` and ``y``; -* at ``predict``, predictions will be computed using ``X`` using the parameters - learned during ``fit``. The output corresponds to the predicted class for each sample; -* ``predict_proba`` will give a 2D matrix where each column corresponds to the - class and each entry will be the probability of the associated class. - -In addition, scikit-learn provides a mixin, i.e. -:class:`sklearn.base.ClassifierMixin`, which implements the ``score`` method -which computes the accuracy score of the predictions. - -One can import this mixin as:: - - >>> from sklearn.base import ClassifierMixin - -Therefore, we create a classifier, :class:`MyOwnClassifier` which inherits -from both :class:`slearn.base.BaseEstimator` and -:class:`sklearn.base.ClassifierMixin`. The method ``fit`` gets ``X`` and ``y`` -as input and should return ``self``. It should implement the ``predict`` -function which should output the class inferred by the classifier. -``predict_proba`` will output some probabilities instead:: - - >>> class MyOwnClassifier(ClassifierMixin, BaseEstimator): - ... def fit(self, X, y): - ... self.classes_ = np.unique(y) - ... return self - ... def predict(self, X): - ... return np.random.randint(0, self.classes_.size, - ... size=X.shape[0]) - ... def predict_proba(self, X): - ... pred = np.random.rand(X.shape[0], self.classes_.size) - ... return pred / np.sum(pred, axis=1)[:, np.newaxis] - -We illustrate that this regressor is working within a scikit-learn pipeline:: - - >>> X, y = load_iris(return_X_y=True) - >>> pipe = make_pipeline(MyOwnTransformer(), MyOwnClassifier()) - >>> pipe.fit(X, y) # doctest: +ELLIPSIS - Pipeline(...) - -Then, you can call ``predict`` and ``predict_proba``:: - - >>> pipe.predict(X) # doctest: +ELLIPSIS - array([...]) - >>> pipe.predict_proba(X) # doctest: +ELLIPSIS - array([...]) - -Since our classifier inherits from :class:`sklearn.base.ClassifierMixin`, we -can compute the accuracy by calling the ``score`` method:: - - >>> pipe.score(X, y) # doctest: +ELLIPSIS - 0... diff --git a/examples/README.txt b/examples/README.txt index 6a1d992..298303c 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -3,4 +3,4 @@ Example Gallery =============== -Introductory examples. +Examples of FSVM usage. diff --git a/examples/plot_classifier.py b/examples/plot_classifier.py index ec88676..f0c31c1 100644 --- a/examples/plot_classifier.py +++ b/examples/plot_classifier.py @@ -1,6 +1,6 @@ """ ============================ -Plotting Template Classifier +Plotting FSVM Classifier ============================ An example plot of :class:`fsvm.FuzzySVC` diff --git a/fsvm/_fuzzy_svc.py b/fsvm/_fuzzy_svc.py index 0d59343..8d810d3 100644 --- a/fsvm/_fuzzy_svc.py +++ b/fsvm/_fuzzy_svc.py @@ -397,11 +397,14 @@ def fit(self, X, y): return self def predict(self, X): - """A reference implementation of a prediction for a classifier. + """ + A reference implementation of a prediction for a classifier. + Parameters ---------- X : array-like, shape (n_samples, n_features) The input samples. + Returns ------- y : ndarray, shape (n_samples,) diff --git a/venv/bin/Activate.ps1 b/venv/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/venv/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove VIRTUAL_ENV_PROMPT altogether. + if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { + Remove-Item -Path env:VIRTUAL_ENV_PROMPT + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } + $env:VIRTUAL_ENV_PROMPT = $Prompt +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/venv/bin/activate b/venv/bin/activate new file mode 100644 index 0000000..def8f41 --- /dev/null +++ b/venv/bin/activate @@ -0,0 +1,70 @@ +# This file must be used with "source bin/activate" *from bash* +# You cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # Call hash to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + hash -r 2> /dev/null + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +# on Windows, a path can contain colons and backslashes and has to be converted: +if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then + # transform D:\path\to\venv to /d/path/to/venv on MSYS + # and to /cygdrive/d/path/to/venv on Cygwin + export VIRTUAL_ENV=$(cygpath "/Users/balins/fsvm/venv") +else + # use the path as-is + export VIRTUAL_ENV="/Users/balins/fsvm/venv" +fi + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(venv) ${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT="(venv) " + export VIRTUAL_ENV_PROMPT +fi + +# Call hash to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +hash -r 2> /dev/null diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh new file mode 100644 index 0000000..e2feae9 --- /dev/null +++ b/venv/bin/activate.csh @@ -0,0 +1,27 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. + +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/Users/balins/fsvm/venv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(venv) $prompt" + setenv VIRTUAL_ENV_PROMPT "(venv) " +endif + +alias pydoc python -m pydoc + +rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish new file mode 100644 index 0000000..7c38b54 --- /dev/null +++ b/venv/bin/activate.fish @@ -0,0 +1,69 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/). You cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + set -e _OLD_FISH_PROMPT_OVERRIDE + # prevents error when using nested fish instances (Issue #93858) + if functions -q _old_fish_prompt + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/Users/balins/fsvm/venv" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" + set -gx VIRTUAL_ENV_PROMPT "(venv) " +end diff --git a/venv/bin/docutils b/venv/bin/docutils new file mode 100755 index 0000000..10a22d4 --- /dev/null +++ b/venv/bin/docutils @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.__main__ import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/keyring b/venv/bin/keyring new file mode 100755 index 0000000..664e7b8 --- /dev/null +++ b/venv/bin/keyring @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from keyring.cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/markdown-it b/venv/bin/markdown-it new file mode 100755 index 0000000..c6c82da --- /dev/null +++ b/venv/bin/markdown-it @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from markdown_it.cli.parse import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/normalizer b/venv/bin/normalizer new file mode 100755 index 0000000..10e620c --- /dev/null +++ b/venv/bin/normalizer @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer.cli import cli_detect +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_detect()) diff --git a/venv/bin/pip b/venv/bin/pip new file mode 100755 index 0000000..f5a6cab --- /dev/null +++ b/venv/bin/pip @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3.12 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 new file mode 100755 index 0000000..f5a6cab --- /dev/null +++ b/venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3.12 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3.12 b/venv/bin/pip3.12 new file mode 100755 index 0000000..f5a6cab --- /dev/null +++ b/venv/bin/pip3.12 @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3.12 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pkginfo b/venv/bin/pkginfo new file mode 100755 index 0000000..85bcdfe --- /dev/null +++ b/venv/bin/pkginfo @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pkginfo.commandline import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pygmentize b/venv/bin/pygmentize new file mode 100755 index 0000000..a28be70 --- /dev/null +++ b/venv/bin/pygmentize @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pygments.cmdline import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pyproject-build b/venv/bin/pyproject-build new file mode 100755 index 0000000..5e7c86c --- /dev/null +++ b/venv/bin/pyproject-build @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from build.__main__ import entrypoint +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entrypoint()) diff --git a/venv/bin/python b/venv/bin/python new file mode 120000 index 0000000..11b9d88 --- /dev/null +++ b/venv/bin/python @@ -0,0 +1 @@ +python3.12 \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 new file mode 120000 index 0000000..11b9d88 --- /dev/null +++ b/venv/bin/python3 @@ -0,0 +1 @@ +python3.12 \ No newline at end of file diff --git a/venv/bin/python3.12 b/venv/bin/python3.12 new file mode 120000 index 0000000..a3f0508 --- /dev/null +++ b/venv/bin/python3.12 @@ -0,0 +1 @@ +/opt/homebrew/opt/python@3.12/bin/python3.12 \ No newline at end of file diff --git a/venv/bin/rst2html b/venv/bin/rst2html new file mode 100755 index 0000000..65621f0 --- /dev/null +++ b/venv/bin/rst2html @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2html +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2html()) diff --git a/venv/bin/rst2html4 b/venv/bin/rst2html4 new file mode 100755 index 0000000..33c44ec --- /dev/null +++ b/venv/bin/rst2html4 @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2html4 +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2html4()) diff --git a/venv/bin/rst2html5 b/venv/bin/rst2html5 new file mode 100755 index 0000000..d5cb694 --- /dev/null +++ b/venv/bin/rst2html5 @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2html5 +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2html5()) diff --git a/venv/bin/rst2latex b/venv/bin/rst2latex new file mode 100755 index 0000000..c57db93 --- /dev/null +++ b/venv/bin/rst2latex @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2latex +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2latex()) diff --git a/venv/bin/rst2man b/venv/bin/rst2man new file mode 100755 index 0000000..b0c7282 --- /dev/null +++ b/venv/bin/rst2man @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2man +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2man()) diff --git a/venv/bin/rst2odt b/venv/bin/rst2odt new file mode 100755 index 0000000..93f3b22 --- /dev/null +++ b/venv/bin/rst2odt @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2odt +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2odt()) diff --git a/venv/bin/rst2pseudoxml b/venv/bin/rst2pseudoxml new file mode 100755 index 0000000..87877c7 --- /dev/null +++ b/venv/bin/rst2pseudoxml @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2pseudoxml +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2pseudoxml()) diff --git a/venv/bin/rst2s5 b/venv/bin/rst2s5 new file mode 100755 index 0000000..b172146 --- /dev/null +++ b/venv/bin/rst2s5 @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2s5 +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2s5()) diff --git a/venv/bin/rst2xetex b/venv/bin/rst2xetex new file mode 100755 index 0000000..f916ff8 --- /dev/null +++ b/venv/bin/rst2xetex @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2xetex +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2xetex()) diff --git a/venv/bin/rst2xml b/venv/bin/rst2xml new file mode 100755 index 0000000..7426207 --- /dev/null +++ b/venv/bin/rst2xml @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.core import rst2xml +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(rst2xml()) diff --git a/venv/bin/twine b/venv/bin/twine new file mode 100755 index 0000000..d461f61 --- /dev/null +++ b/venv/bin/twine @@ -0,0 +1,8 @@ +#!/Users/balins/fsvm/venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from twine.__main__ import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/pyvenv.cfg b/venv/pyvenv.cfg new file mode 100644 index 0000000..76536ec --- /dev/null +++ b/venv/pyvenv.cfg @@ -0,0 +1,5 @@ +home = /opt/homebrew/opt/python@3.12/bin +include-system-site-packages = false +version = 3.12.4 +executable = /opt/homebrew/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/bin/python3.12 +command = /opt/homebrew/opt/python@3.12/bin/python3.12 -m venv /Users/balins/fsvm/venv