Skip to content

Updated all old links (dead links, redirects and non-https) #2448

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AutoDuck/pyhtml.fmt
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ $(def1)$4$(par)

.tag=pyseeapi, html, 1, 1
.pre=$(rmh)Win32 API References$(rmhe)$(par)
.format=$(term1)Search for <i>$1</i> at <a href="http://search.msdn.microsoft.com/search/results.aspx?view=msdn&query=$1" target="_blank">msdn</a>, <a href="http://www.google.com/search?q=$1" target="_blank">google</a> or <a href="http://groups.google.com/groups?q=$1" target="_blank">google groups</a>.$(par)
.format=$(term1)Search for <i>$1</i> at <a href="https://learn.microsoft.com/en-ca/search/?terms=$1" target="_blank">msdn</a>, <a href="https://www.google.com/search?q=$1" target="_blank">google</a> or <a href="https://groups.google.com/groups?q=$1" target="_blank">google groups</a>.$(par)

.tag=pyundocmfc, html, 2, 1
.pre=$(rmh)Undocumented MFC References$(par)
Expand Down
8 changes: 4 additions & 4 deletions AutoDuck/pywin32-document.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
<item name="View the change log" href="html/CHANGES.txt"/>
</important>
<links>
<item name="Python Web Site" href="http://www.python.org"/>
<item name="Python Web Site" href="https://www.python.org"/>
<item name="Python for Win32 Extensions Site" href="https://github.com/mhammond/pywin32"/>
<item name="Python for Win32 mailing list" href="http://mail.python.org/mailman/listinfo/python-win32"/>
<item name="Tim Golden's Python pages" href="http://timgolden.me.uk/python/"/>
<item name="Paul Boddie's Python COM tutorial" href="http://thor.prohosting.com/~pboddie/Python/COM.html"/>
<item name="Python for Win32 mailing list" href="https://mail.python.org/mailman/listinfo/python-win32"/>
<item name="Tim Golden's Python pages" href="https://timgolden.me.uk/python/"/>
<item name="Paul Boddie's Python COM tutorial" href="https://web.archive.org/web/20090314180624/http://thor.prohosting.com:80/~pboddie/Python/COM.html"/>
</links>
<category id="win32" label="Win32 API">
<overviews>
Expand Down
2 changes: 1 addition & 1 deletion CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ or
https://github.com/mhammond/pywin32/compare/b3xx...main

As of build 305, installation .exe files have been deprecated; see
https://mhammond.github.io/pywin32_installers.html.
https://mhammond.github.io/pywin32_installers.html .

Coming in build 309, as yet unreleased
--------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/contents.d
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ If the first fold in the file is collapsed, all top-level folds are opened. Oth
@flag Ctrl+Down|Recall the next command in the history list.

@topic Source code folding in the editor|
Thanks to Scintilla (http://www.scintilla.org), Pythonwin supports
Thanks to Scintilla (https://www.scintilla.org), Pythonwin supports
source code folding. Folding is the ability to collapse sections of
your source-code into a single line, making it easier to navigate
around large files. Any Python statement which introduces a new block
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/doc/debugger/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<H1><IMG SRC="pythonwin.gif" WIDTH=64 HEIGHT=64>Pythonwin Debugger Overview </H1>
<B><P>News Flash:</P>
</B><P>We take full advantage of Scintilla from Neil Hodgson (see <a HREF="http://www.scintilla.org">scintilla.org</a>) This offers a much better interface, including Visual C++/VB type indicators for breakpoints in the left
</B><P>We take full advantage of Scintilla from Neil Hodgson (see <a HREF="https://www.scintilla.org">scintilla.org</a>) This offers a much better interface, including Visual C++/VB type indicators for breakpoints in the left
column, etc</P>
<P>This document gives a general overview of the Pythonwin Debugger package. </P>

Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/pywin/Demos/guidemo.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
("OCX Serial Port Demo", "from ocx import ocxserialtest; ocxserialtest.test()"),
(
"Internet Explorer Control Demo",
'from ocx import webbrowser; webbrowser.Demo("http://www.python.org")',
'from ocx import webbrowser; webbrowser.Demo("https://www.python.org")',
),
]

Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/pywin/Demos/ocx/flash.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# simple flash/python application demonstrating bidirectional
# communicaion between flash and python. Click the sphere to see
# behavior. Uses Bounce.swf from FlashBounce.zip, available from
# http://pages.cpsc.ucalgary.ca/~saul/vb_examples/tutorial12/
# https://cspages.ucalgary.ca/~saul/vb_examples/tutorial12/

# Update to the path of the .swf file (note it could be a true URL)
flash_url = "c:\\bounce.swf"
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/pywin/Demos/ocx/webbrowser.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def __init__(self, url=None):
if url is None:
self.url = regutil.GetRegisteredHelpFile("Main Python Documentation")
if self.url is None:
self.url = "http://www.python.org"
self.url = "https://www.python.org"
else:
self.url = url
pass # Don't call base class doc/view version...
Expand Down
3 changes: 2 additions & 1 deletion Pythonwin/pywin/framework/help.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ def OpenHelpFile(fileName, helpCmd=None, helpArg=None):
# XXX - using the htmlhelp API wreaks havoc with keyboard shortcuts
# so we disable it, forcing ShellExecute, which works fine (but
# doesn't close the help file when Pythonwin is closed.
# Tom Heller also points out http://www.microsoft.com/mind/0499/faq/faq0499.asp,
# Tom Heller also points out
# https://web.archive.org/web/20070519165457/http://www.microsoft.com:80/mind/0499/faq/faq0499.asp ,
# which may or may not be related.
elif 0 and ext == ".chm":
import win32help
Expand Down
2 changes: 1 addition & 1 deletion Pythonwin/readme.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ <H2><A NAME="RecentChanges">Recent Changes</A></H2>
finish.</P>
<P>Support for Scintilla's indentation guides, that gives a nice indication of
the block structure.</P>
<P>New, improved color editor, using the Scintilla control by Neil Hodgson (see <A HREF="http://hare.net.au/~neilh/ScintillaTide.html">http://hare.net.au/~neilh/ScintillaTide.html</A>). The debugger now requires use of this editor.</P>
<P>New, improved color editor, using the Scintilla control by Neil Hodgson (see <A HREF="https://www.scintilla.org/">https://www.scintilla.org/</A>). The debugger now requires use of this editor.</P>
<P>Much better printing support from Roger Burnham. Pythonwin itself still can't print anything, but the framework can (meaning some kind soul could now add the support to Pythonwin :-)</P>
<P>DDE support is complete.</P>
<P>Reference helpfile is far more complete.</P>
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ for all bugs or features are also welcome.
However, please **do not open github issues for general support requests**, or
for problems or questions using the modules in this package - they will be
closed. For such issues, please email the
[python-win32 mailing list](http://mail.python.org/mailman/listinfo/python-win32) -
[python-win32 mailing list](https://mail.python.org/mailman/listinfo/python-win32) -
note that you must be subscribed to the list before posting.

## Binaries
Expand Down
2 changes: 1 addition & 1 deletion SWIG/pywin32_swig.patch
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The patch is against SWIG-1.1p5 which can be found at:

or

http://starship.python.net/crew/mhammond/downloads/swig1.1p5.tar.gz
https://web.archive.org/web/20110527063221/http://starship.python.net/crew/mhammond/downloads/swig1.1p5.tar.gz

To build the version of SWIG:

Expand Down
2 changes: 1 addition & 1 deletion adodbapi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""adodbapi - A python DB API 2.0 (PEP 249) interface to Microsoft ADO

Copyright (C) 2002 Henrik Ekelund, version 2.1 by Vernon Cole
* http://sourceforge.net/projects/adodbapi
* https://sourceforge.net/projects/adodbapi
"""

import time
Expand Down
4 changes: 3 additions & 1 deletion adodbapi/ado_consts.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# ADO enumerated constants documented on MSDN:
# http://msdn.microsoft.com/en-us/library/ms678353(VS.85).aspx
# https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/ado-enumerated-constants
# TODO: Update to https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/ado-enumerated-constants

# IsolationLevelEnum
adXactUnspecified = -1
Expand Down Expand Up @@ -79,6 +80,7 @@ def ado_direction_name(ado_dir):

# DataTypeEnum - ADO Data types documented at:
# http://msdn2.microsoft.com/en-us/library/ms675318.aspx
# TODO: Update to https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/datatypeenum
adArray = 0x2000
adEmpty = 0x0
adBSTR = 0x8
Expand Down
13 changes: 7 additions & 6 deletions adodbapi/adodbapi.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""adodbapi - A python DB API 2.0 (PEP 249) interface to Microsoft ADO

Copyright (C) 2002 Henrik Ekelund, versions 2.1 and later by Vernon Cole
* http://sourceforge.net/projects/pywin32
* https://sourceforge.net/projects/pywin32
* https://github.com/mhammond/pywin32
* http://sourceforge.net/projects/adodbapi
* https://sourceforge.net/projects/adodbapi

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
Expand All @@ -21,7 +21,7 @@

django adaptations and refactoring by Adam Vandenberg

DB-API 2.0 specification: http://www.python.org/dev/peps/pep-0249/
DB-API 2.0 specification: https://peps.python.org/pep-0249/

This module source should run correctly in CPython versions 2.7 and later,
or CPython 3.4 or later.
Expand Down Expand Up @@ -79,8 +79,9 @@ def connect(*args, **kwargs): # --> a db-api connection object

call using:
:connection_string -- An ADODB formatted connection string, see:
* http://www.connectionstrings.com
* http://www.asp101.com/articles/john/connstring/default.asp
* https://www.connectionstrings.com
* https://www.codeguru.com/dotnet/whats-in-an-ado-connection-string/
* https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/connection-strings
:timeout -- A command timeout value, in seconds (default 30 seconds)
"""
co = Connection() # make an empty connection object
Expand Down Expand Up @@ -474,7 +475,7 @@ def _suggest_error_class(self):
"""Introspect the current ADO Errors and determine an appropriate error class.

Error.SQLState is a SQL-defined error condition, per the SQL specification:
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
https://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

The 23000 class of errors are integrity errors.
Error 40002 is a transactional integrity error.
Expand Down
4 changes: 2 additions & 2 deletions adodbapi/apibase.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"""adodbapi.apibase - A python DB API 2.0 (PEP 249) interface to Microsoft ADO

Copyright (C) 2002 Henrik Ekelund, version 2.1 by Vernon Cole
* http://sourceforge.net/projects/pywin32
* http://sourceforge.net/projects/adodbapi
* https://sourceforge.net/projects/pywin32
* https://sourceforge.net/projects/adodbapi
"""

from __future__ import annotations
Expand Down
28 changes: 11 additions & 17 deletions adodbapi/quick_reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,17 @@ be able to process this information in either format. The resulting mass
of confusion is called a "connection string". There is an entire web
site dedicated to giving examples of connection strings in numerous
combinations. See
[http://www.connectionstrings.com](http://www.connectionstrings.com/)
[https://www.connectionstrings.com](https://www.connectionstrings.com/)

The software which connects ODBC to an engine is called a "Driver". One
which talks in ADO is called a "Provider". Sometimes there will be a
Provider for a Driver.

### Driver (and Provider) download links

The current (as of 2019) SQL Server OLE DB provider (which they call a
"driver" here) is
<https://www.microsoft.com/en-us/download/details.aspx?id=56730> which
is linked from, and explained [here, in their
document.](https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-2017)
The current SQL Server OLE DB provider (which they call a
"driver" here) is explained and can be downloaded from
[their document](https://learn.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server#download).

- Jet (ACCESS database) and other file datasets (like .xls and .csv) "ACE"
Provider:
Expand All @@ -61,21 +59,17 @@ Windows. Note that you are not permitted load the 32 bit "ACE" provider
if you have any 64-bit Office components installed. Conventional wisdom
says that you must use 64 bit Python in this case. However, see the
answer in
<http://stackoverflow.com/questions/12270453/ms-access-db-engine-32-bit-with-office-64-bit>.
<https://stackoverflow.com/questions/12270453/ms-access-db-engine-32-bit-with-office-64-bit>.
If you decide to try hacking the installers, you may find
<http://www.pantaray.com/msi_super_orca.html> to be a useful alternative
to Orca. My experience is that such a [hacked installer (like this
one)](http://shares.digvil.info/redis) can also be used on machines
where "click to buy" versions of Office have been removed, but are still
blocking installation of the redistributable provider.
<https://www.pantaray.com/msi_super_orca.html> to be a useful alternative to Orca.

- To use any ODBC driver from 64 bit Python, you also need the MSDASQL
provider. It is shipped with Server 2008, and Vista and later.
provider, which is shipped with Windows.

- MySQL driver <http://dev.mysql.com/downloads/connector/odbc/>
or MariaDB driver <https://downloads.mariadb.org/connector-odbc/>
- MySQL driver <https://dev.mysql.com/downloads/connector/odbc/>
or MariaDB driver <https://mariadb.org/connector-odbc/all-releases/>
or `choco install mysql.odbc`
- PostgreSQL driver <http://www.postgresql.org/ftp/odbc/versions/msi/>
- PostgreSQL driver <https://www.postgresql.org/ftp/odbc/releases/>
(scroll all the way to the bottom) or `choco install psqlodbc`.

\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--
Expand All @@ -89,7 +83,7 @@ the PEP-249 api. I may write a book later. Here, I only intend to cover
the extensions and special features of adodbapi. The PEP-249 database
access api specification is found at:

<http://www.python.org/dev/peps/pep-0249/>
<https://peps.python.org/pep-0249/>

### Module level attributes

Expand Down
15 changes: 8 additions & 7 deletions adodbapi/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ adodbapi
A Python DB-API 2.0 (PEP-249) module that makes it easy to use Microsoft ADO
for connecting with databases and other data sources using CPython.

Home page: <http://sourceforge.net/projects/adodbapi>
Home page: <https://sourceforge.net/projects/adodbapi>

Features:
* 100% DB-API 2.0 (PEP-249) compliant (including most extensions and recommendations).
Expand All @@ -24,7 +24,7 @@ Prerequisites:

Installation:
* (C-Python on Windows): Install pywin32 (`python -m pip install pywin32`) which includes adodbapi.
* (IronPython on Windows): Download adodbapi from http://sf.net/projects/adodbapi. Unpack the zip.
* (IronPython on Windows): Download adodbapi from https://sourceforge.net/projects/adodbapi/ . Unpack the zip.

NOTE: ...........
If you do not like the new default operation of returning Numeric columns as decimal.Decimal,
Expand Down Expand Up @@ -69,15 +69,16 @@ what's new in version 2.5

License
-------
LGPL, see http://www.opensource.org/licenses/lgpl-license.php
LGPL, see https://opensource.org/license/lgpl-2-1

Documentation
-------------

Look at adodbapi/quick_reference.md
http://www.python.org/topics/database/DatabaseAPI-2.0.html
read the examples in adodbapi/examples
and look at the test cases in adodbapi/test directory.
Look at:
- `adodbapi/quick_reference.md`
- https://wiki.python.org/moin/DatabaseProgramming#The_DB-API
- read the examples in adodbapi/examples
- and the test cases in `adodbapi/test directory`

Mailing lists
-------------
Expand Down
2 changes: 1 addition & 1 deletion adodbapi/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
DESCRIPTION = (
"""A pure Python package implementing PEP 249 DB-API using Microsoft ADO."""
)
URL = "http://sourceforge.net/projects/adodbapi"
URL = "https://sourceforge.net/projects/adodbapi"
LICENSE = "LGPL"
CLASSIFIERS = [
"Development Status :: 5 - Production/Stable",
Expand Down
2 changes: 1 addition & 1 deletion adodbapi/test/adodbapitestconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@
"Provider=MSDASQL;Driver={PostgreSQL Unicode(x64)}",
"Driver=PostgreSQL Unicode",
]
# get driver from http://www.postgresql.org/ftp/odbc/versions/
# get driver from https://www.postgresql.org/ftp/odbc/releases/
# test using positional and keyword arguments (bad example for real code)
print(" ...Testing PostgreSQL login to {}...".format(_computername))
doPostgresTest, connStrPostgres, dbPostgresConnect = tryconnection.try_connection(
Expand Down
3 changes: 2 additions & 1 deletion build_env.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ way to build pywin32 - it's build process should find these tools automatically.

## For Visual Studio 2019

- Install the [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16#) (`vs_BuildTools.exe` ~ 1 MB)
- Install the [Build Tools for Visual Studio 2019](https://my.visualstudio.com/Downloads?q=Build%20Tools%20for%20Visual%20Studio%202019) (Version 16.0)
Public landing page: <https://visualstudio.microsoft.com/vs/older-downloads/#2019-family>

- Maybe stop your virus scanner
- In `Visual Studio Installer`:
Expand Down
2 changes: 1 addition & 1 deletion com/TestSources/PyCOMTest/PyCOMImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ HRESULT CPyCOMTest::Fire(long nID)
if (FAILED(hr))
break;
// call FireWithNamedParams a variety of ways.
// See http://msdn2.microsoft.com/en-us/library/ms221653.aspx
// See https://learn.microsoft.com/en-ca/previous-versions/windows/desktop/automat/passing-parameters
// "Passing Parameters (Component Automation)" for details.

OLECHAR *names2[] = {L"OnFireWithNamedParams"};
Expand Down
6 changes: 5 additions & 1 deletion com/help/active_directory.html
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,11 @@ <h2><a name="Conclusion">In Conclusion</a></h2>
<h1><a name="Further Info">Further Info</a></h1>
<p>
<ul>
<li><a href="https://msdn.microsoft.com">Microsoft MSDN references</a>
<li>
<a href="https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/active-directory-overview">
Windows Active Directory documentation
</a>
</li>
</ul>
</p>
<hr><h1><a name="Author">Author</a></h1>
Expand Down
19 changes: 11 additions & 8 deletions com/help/adsi.html
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
<hr>
<h1><a name="SUMMARY">SUMMARY</a></h1>
<p>
Python's adsi access works really well with Exchange (late or early binding since you can read microsoft's type library).
To get started, you will need to download adsi from microsoft:
<a href="https://www.microsoft.com/windows/server/Technical/directory/adsilinks.asp">Microsoft ADSI</a>.
Python's ADSI access works really well with Exchange (late or early binding since you can read microsoft's type library).
To get started, you will need to download ADSI from microsoft:
<a href="https://learn.microsoft.com/en-us/windows/win32/adsi/setting-up-your-development-environment">Setting Up Your Development Environment</a>.
Microsoft has documentation for using languages other than python in the sdk.
</p>

Expand Down Expand Up @@ -89,9 +89,10 @@ <h2><a name="Introduction">Introduction</a></h2>
</table>

<br>
<strong>Note</strong> -- the fourth argument to opendsobject has various options for how to authenticate.
<strong>Note</strong> -- the fourth argument to OpenDSObject has various options for how to authenticate.
For example, if you use 1 instead of zero, it should either use NTLM or Kerberos for authentication.
For more information, check out: <a href="http://www.microsoft.com/windows/server/Technical/directory/adsilinks.asp">OpenDSObject</a>
For more information, check out:
<a href="https://learn.microsoft.com/en-us/windows/win32/api/iads/nf-iads-iadsopendsobject-opendsobject">OpenDSObject</a>

<p>
The ex_path in the above example specifies the resource you are trying to access. For example:
Expand Down Expand Up @@ -264,9 +265,11 @@ <h2><a name="Conclusion">In Conclusion</a></h2>
<h1><a name="Further Info">Further Info</a></h1>
<p>
<ul>
<li><a href="http://msdn.microsoft.com">Microsoft MSDN references</a>
<li><a href="http://www.microsoft.com/windows/server/Technical/directory/adsilinks.asp">Microsoft ADSI</a>
<li><a href="http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/adsi/if_core_3uic.htm">Microsoft MSDN ADSI reference</a>
<li>
<a href="https://learn.microsoft.com/en-us/windows/win32/ADSI">
Windows Active Directory Service Interfaces documentation
</a>
</li>
<li>Relevant Python libraries: win32com.client
</ul>
</p>
Expand Down
5 changes: 3 additions & 2 deletions com/help/asp.d
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ block -- they don't extend past intervening html to the next block. For
me that normally isn't an issue, since I do not like mixing code and
html. Prefering a clean split of code and html, I generally
generate webpages using templates all in python w/HTMLgen. Take a look
at: http://www.python.org/topics/web/HTML.html for available resources
w/HTML. An very basic page would look like:
at: https://wiki.python.org/moin/WebBrowserProgramming and
https://wiki.python.org/moin/Asking%20for%20Help/How%20to%20run%20python%20from%20HTML
for available resources w/HTML. A very basic page would look like:

@ex Basic Python ASP page: |

Expand Down
Loading