wxPython 4.0.0a1

Announcing wxPython 4.0.0a1

···

https://pypi.python.org/pypi/wxPython/4.0.0a1https://wxpython.org/Phoenix/docs/html/MigrationGuide.htmlhttps://wxpython.org/Phoenix/docs/html/main.html

Robin Dunn

Software Craftsman

http://wxPython.org

This is great news. We are very grateful to you Robin! Thank you.

···

On Mon, Apr 17, 2017 at 5:55 PM Robin Dunn robin@alldunn.com wrote:

Announcing wxPython 4.0.0a1


https://pypi.python.org/pypi/wxPython/4.0.0a1

I’m pleased to announce that wxPython’s Project Phoenix has made it’s public

debut as wxPython 4.0.0a1, available from PyPI. Don’t let the fact that it is

marked as an “alpha” release scare you away. It is an alpha simply because

this is the first in several
ways:

* It's the first real release of Phoenix, which is built on a different

  foundation than Classic wxPython was.



* It's the first wxPython release intended to be fully available from PyPI and

   buildable/installable by pip

on all of the supported platforms.

* It's the first release for Python3 (binaries for 3.5 and 3.6 are provided,

  and building for 3.4 is still possible as well). In addition, Python 2.7

  is also supported from the same codebase, with binaries available.



* The wheel files are fully self-contained and relocatable on the supported

  platforms, so they are installable in virtual environments without needing

  to be able to find specific versions of the wxWidgets shared libraries

  (or others) at fixed locations elsewhere in the file-system.



* And as with most alphas, there are still a few things that are not

  finished or polished yet.

But even with all that, many people have been using the pre-release snapshots

of Phoenix for quite a while now, and it has been relatively stable and solid

for them.

What is wxPython?


wxPython is a cross-platform GUI
toolkit for the Python programming language.

It allows Python programmers to create programs with a robust, highly

functional graphical user interface, simply and easily. It is implemented as a

set of Python extension modules that wrap the GUI components of the popular

wxWidgets cross platform library, which is written in C++. Supported platforms

are Microsoft Windows, Mac OS X and macOS, and Linux or other unix-like

systems with GTK2 or GTK3 libraries. In most cases the native widgets are used

on each platform to provide a 100% native look and feel for the application.

What is wxPython Phoenix?


wxPython’s Project Phoenix is a new from-the-ground-up implementation of

wxPython, created with the intent of making wxPython “better, stronger, faster

than he was before.” In other words, this new implementation is focused on

improving speed, maintainability
and extensibility of wxPython, as well as

removing most of the cruft that had accumulated over the long life of Classic

wxPython.

The project has been in development off and on, mostly behind the scenes, for

many years. For the past few years automated snapshot builds have been

available for those adventurous enough to try it, and many people eventually

started using the snapshots in their projects, even for production releases.

While there are still some things on the periphery that need to be completed,

the core of the new wxPython extension modules which wrap the wxWidgets code

has been stable for a long time now.

Due to some things being cleaned
up, reorganized, simplified and dehackified

wxPython Phoenix is not completely backwards compatible with wxPython Classic.

This is intended. In general, however, the API differences tend to be minor

and some applications can use Phoenix with slight, or even no modifications.

In some other cases the correct way to do things was also available in Classic

and it’s only the wrong way that
has been removed from Phoenix. For more

information there is a Migration
Guide document available at:

https://wxpython.org/Phoenix/docs/html/MigrationGuide.html

The new wxPython API reference documentation, including all Python-specific

additions and customizations, and docs for the wx.lib package, is located at:

https://wxpython.org/Phoenix/docs/html/main.html


Robin Dunn

Software Craftsman

http://wxPython.org

You received this message because you are subscribed to the Google Groups “wxPython-users” group.

To unsubscribe from this group and stop receiving emails from it, send an email to wxpython-users+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Congratulations!

I hope it works on mobile OS (Android)?

···

On Tue, Apr 18, 2017 at 1:58 AM, Emad Dlala emad.dlala@gmail.com wrote:

This is great news. We are very grateful to you Robin! Thank you.

On Mon, Apr 17, 2017 at 5:55 PM Robin Dunn robin@alldunn.com wrote:

Announcing wxPython 4.0.0a1


https://pypi.python.org/pypi/wxPython/4.0.0a1

I’m pleased to announce that wxPython’s Project Phoenix has made it’s public

debut as wxPython 4.0.0a1, available from PyPI. Don’t let the fact that it is

marked as an “alpha” release scare you away. It is an alpha simply because

this is the first in several
ways:

* It's the first real release of Phoenix, which is built on a different

  foundation than Classic wxPython was.



* It's the first wxPython release intended to be fully available from PyPI and

   buildable/installable by pip

on all of the supported platforms.

* It's the first release for Python3 (binaries for 3.5 and 3.6 are provided,

  and building for 3.4 is still possible as well). In addition, Python 2.7

  is also supported from the same codebase, with binaries available.



* The wheel files are fully self-contained and relocatable on the supported

  platforms, so they are installable in virtual environments without needing

  to be able to find specific versions of the wxWidgets shared libraries

  (or others) at fixed locations elsewhere in the file-system.



* And as with most alphas, there are still a few things that are not

  finished or polished yet.

But even with all that, many people have been using the pre-release snapshots

of Phoenix for quite a while now, and it has been relatively stable and solid

for them.

What is wxPython?


wxPython is a cross-platform GUI
toolkit for the Python programming language.

It allows Python programmers to create programs with a robust, highly

functional graphical user interface, simply and easily. It is implemented as a

set of Python extension modules that wrap the GUI components of the popular

wxWidgets cross platform library, which is written in C++. Supported platforms

are Microsoft Windows, Mac OS X and macOS, and Linux or other unix-like

systems with GTK2 or GTK3 libraries. In most cases the native widgets are used

on each platform to provide a 100% native look and feel for the application.

What is wxPython Phoenix?


wxPython’s Project Phoenix is a new from-the-ground-up implementation of

wxPython, created with the intent of making wxPython “better, stronger, faster

than he was before.” In other words, this new implementation is focused on

improving speed, maintainability
and extensibility of wxPython, as well as

removing most of the cruft that had accumulated over the long life of Classic

wxPython.

The project has been in development off and on, mostly behind the scenes, for

many years. For the past few years automated snapshot builds have been

available for those adventurous enough to try it, and many people eventually

started using the snapshots in their projects, even for production releases.

While there are still some things on the periphery that need to be completed,

the core of the new wxPython extension modules which wrap the wxWidgets code

has been stable for a long time now.

Due to some things being cleaned
up, reorganized, simplified and dehackified

wxPython Phoenix is not completely backwards compatible with wxPython Classic.

This is intended. In general, however, the API differences tend to be minor

and some applications can use Phoenix with slight, or even no modifications.

In some other cases the correct way to do things was also available in Classic

and it’s only the wrong way that
has been removed from Phoenix. For more

information there is a Migration
Guide document available at:

https://wxpython.org/Phoenix/docs/html/MigrationGuide.html

The new wxPython API reference documentation, including all Python-specific

additions and customizations, and docs for the wx.lib package, is located at:

https://wxpython.org/Phoenix/docs/html/main.html


Robin Dunn

Software Craftsman

http://wxPython.org

You received this message because you are subscribed to the Google Groups “wxPython-users” group.

To unsubscribe from this group and stop receiving emails from it, send an email to wxpython-users+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

You received this message because you are subscribed to the Google Groups “wxPython-users” group.

To unsubscribe from this group and stop receiving emails from it, send an email to wxpython-users+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


*Wouldn’t you rather do Business with us? *
This message is for the designated recipient only and may contain
privileged, proprietary, or otherwise private information. If you have
received it in error, please notify the sender immediately and delete the
original. Any use of the email by you is prohibited. If you have received
this communication in error, please notify the author by replying to this
e-mail immediately.


www.BintaSMS.com <http://www.bintasms.com/>
www.BintaComputers.net <http://www.bintacomputers.net/>

Congrats on the release.

I see there are wheels for various Linux distros on the website and none on PyPI. Have you considered producing manylinux wheels?

···

Le mardi 18 avril 2017 02:55:09 UTC+2, Robin Dunn a écrit :

Announcing wxPython 4.0.0a1


https://pypi.python.org/pypi/wxPython/4.0.0a1

I’m pleased to announce that wxPython’s Project Phoenix has made it’s public

debut as wxPython 4.0.0a1, available from PyPI. Don’t let the fact that it is

marked as an “alpha” release scare you away. It is an alpha simply because

this is the first in several
ways:

* It's the first real release of Phoenix, which is built on a different

  foundation than Classic wxPython was.



* It's the first wxPython release intended to be fully available from PyPI and

   buildable/installable by pip

on all of the supported platforms.

* It's the first release for Python3 (binaries for 3.5 and 3.6 are provided,

  and building for 3.4 is still possible as well). In addition, Python 2.7

  is also supported from the same codebase, with binaries available.



* The wheel files are fully self-contained and relocatable on the supported

  platforms, so they are installable in virtual environments without needing

  to be able to find specific versions of the wxWidgets shared libraries

  (or others) at fixed locations elsewhere in the file-system.



* And as with most alphas, there are still a few things that are not

  finished or polished yet.

But even with all that, many people have been using the pre-release snapshots

of Phoenix for quite a while now, and it has been relatively stable and solid

for them.

What is wxPython?


wxPython is a cross-platform GUI
toolkit for the Python programming language.

It allows Python programmers to create programs with a robust, highly

functional graphical user interface, simply and easily. It is implemented as a

set of Python extension modules that wrap the GUI components of the popular

wxWidgets cross platform library, which is written in C++. Supported platforms

are Microsoft Windows, Mac OS X and macOS, and Linux or other unix-like

systems with GTK2 or GTK3 libraries. In most cases the native widgets are used

on each platform to provide a 100% native look and feel for the application.

What is wxPython Phoenix?


wxPython’s Project Phoenix is a new from-the-ground-up implementation of

wxPython, created with the intent of making wxPython “better, stronger, faster

than he was before.” In other words, this new implementation is focused on

improving speed, maintainability
and extensibility of wxPython, as well as

removing most of the cruft that had accumulated over the long life of Classic

wxPython.

The project has been in development off and on, mostly behind the scenes, for

many years. For the past few years automated snapshot builds have been

available for those adventurous enough to try it, and many people eventually

started using the snapshots in their projects, even for production releases.

While there are still some things on the periphery that need to be completed,

the core of the new wxPython extension modules which wrap the wxWidgets code

has been stable for a long time now.

Due to some things being cleaned
up, reorganized, simplified and dehackified

wxPython Phoenix is not completely backwards compatible with wxPython Classic.

This is intended. In general, however, the API differences tend to be minor

and some applications can use Phoenix with slight, or even no modifications.

In some other cases the correct way to do things was also available in Classic

and it’s only the wrong way that
has been removed from Phoenix. For more

information there is a Migration
Guide document available at:

https://wxpython.org/Phoenix/docs/html/MigrationGuide.html

The new wxPython API reference documentation, including all Python-specific

additions and customizations, and docs for the wx.lib package, is located at:

https://wxpython.org/Phoenix/docs/html/main.html


Robin Dunn

Software Craftsman

http://wxPython.org

Adrien Tétar wrote:

Congrats on the release.

I
see there are wheels for various Linux distros on the website and none on PyPI. Have you considered producing manylinux wheels?

Yes, I experimented with doing a manylinux1 build a few months ago. There are many external libs that wxWidgets requires that are not included in the manylinux1 spec, which would have complicated the build significantly to include those in the wheel. I do plan on looking into it some more in the future, hopefully a way can be found to make it possible.

···


Robin Dunn

Software Craftsman

http://wxPython.org

wxWidgets itself does not support Android - Overview - wxWidgets

So no, it does not.
Mike

···

On Monday, April 17, 2017 at 10:46:04 PM UTC-5, Umar Yusuf wrote:

Congratulations!

I hope it works on mobile OS (Android)?

Congrats!!! Very good news indeed.

With regard to manylinux wheels:

Some SciPy-related folks have been building wheels for the SciPy
stack. They have some tools to help, and need at least some if the
same libs: libpng, freetype, etc.

Look on gitHub for the project-- if you can't find it, I may be able
too. (In a phone and in a hurry now...)

-Chris

Hi Robin and wxPythoners,

Announcing wxPython 4.0.0a1


https://pypi.python.org/pypi/wxPython/4.0.0a1

I’m pleased to announce that wxPython’s Project Phoenix has made it’s public

debut as wxPython 4.0.0a1, available from PyPI. Don’t let the fact that it is

marked as an “alpha” release scare you away.

This is great. I have waited for long time as I wanted to write a wxPython projects and didn’t wanted to start with Python2
So congratulations and thank you!

···

On Tuesday, April 18, 2017 at 3:55:09 AM UTC+3, Robin Dunn wrote:

It is an alpha simply because

this is the first in several
ways:

* It's the first real release of Phoenix, which is built on a different

  foundation than Classic wxPython was.



* It's the first wxPython release intended to be fully available from PyPI and

   buildable/installable by pip

on all of the supported platforms.

* It's the first release for Python3 (binaries for 3.5 and 3.6 are provided,

  and building for 3.4 is still possible as well). In addition, Python 2.7

  is also supported from the same codebase, with binaries available.



* The wheel files are fully self-contained and relocatable on the supported

  platforms, so they are installable in virtual environments without needing

  to be able to find specific versions of the wxWidgets shared libraries

  (or others) at fixed locations elsewhere in the file-system.



* And as with most alphas, there are still a few things that are not

  finished or polished yet.

But even with all that, many people have been using the pre-release snapshots

of Phoenix for quite a while now, and it has been relatively stable and solid

for them.

What is wxPython?


wxPython is a cross-platform GUI
toolkit for the Python programming language.

It allows Python programmers to create programs with a robust, highly

functional graphical user interface, simply and easily. It is implemented as a

set of Python extension modules that wrap the GUI components of the popular

wxWidgets cross platform library, which is written in C++. Supported platforms

are Microsoft Windows, Mac OS X and macOS, and Linux or other unix-like

systems with GTK2 or GTK3 libraries. In most cases the native widgets are used

on each platform to provide a 100% native look and feel for the application.

What is wxPython Phoenix?


wxPython’s Project Phoenix is a new from-the-ground-up implementation of

wxPython, created with the intent of making wxPython “better, stronger, faster

than he was before.” In other words, this new implementation is focused on

improving speed, maintainability
and extensibility of wxPython, as well as

removing most of the cruft that had accumulated over the long life of Classic

wxPython.

The project has been in development off and on, mostly behind the scenes, for

many years. For the past few years automated snapshot builds have been

available for those adventurous enough to try it, and many people eventually

started using the snapshots in their projects, even for production releases.

While there are still some things on the periphery that need to be completed,

the core of the new wxPython extension modules which wrap the wxWidgets code

has been stable for a long time now.

Due to some things being cleaned
up, reorganized, simplified and dehackified

wxPython Phoenix is not completely backwards compatible with wxPython Classic.

This is intended. In general, however, the API differences tend to be minor

and some applications can use Phoenix with slight, or even no modifications.

In some other cases the correct way to do things was also available in Classic

and it’s only the wrong way that
has been removed from Phoenix. For more

information there is a Migration
Guide document available at:

https://wxpython.org/Phoenix/docs/html/MigrationGuide.html

The new wxPython API reference documentation, including all Python-specific

additions and customizations, and docs for the wx.lib package, is located at:

https://wxpython.org/Phoenix/docs/html/main.html


Robin Dunn

Software Craftsman

http://wxPython.org

great news.

···

On Tue, Apr 25, 2017 at 3:51 PM, Stefano Mtangoo mwinjilisti@gmail.com wrote:

Hi Robin and wxPythoners,

On Tuesday, April 18, 2017 at 3:55:09 AM UTC+3, Robin Dunn wrote:

Announcing wxPython 4.0.0a1


https://pypi.python.org/pypi/wxPython/4.0.0a1

I’m pleased to announce that wxPython’s Project Phoenix has made it’s public

debut as wxPython 4.0.0a1, available from PyPI. Don’t let the fact that it is

marked as an “alpha” release scare you away.

This is great. I have waited for long time as I wanted to write a wxPython projects and didn’t wanted to start with Python2
So congratulations and thank you!

It is an alpha simply because

this is the first in several
ways:

* It's the first real release of Phoenix, which is built on a different

  foundation than Classic wxPython was.



* It's the first wxPython release intended to be fully available from PyPI and

   buildable/installable by pip

on all of the supported platforms.

* It's the first release for Python3 (binaries for 3.5 and 3.6 are provided,

  and building for 3.4 is still possible as well). In addition, Python 2.7

  is also supported from the same codebase, with binaries available.



* The wheel files are fully self-contained and relocatable on the supported

  platforms, so they are installable in virtual environments without needing

  to be able to find specific versions of the wxWidgets shared libraries

  (or others) at fixed locations elsewhere in the file-system.



* And as with most alphas, there are still a few things that are not

  finished or polished yet.

But even with all that, many people have been using the pre-release snapshots

of Phoenix for quite a while now, and it has been relatively stable and solid

for them.

What is wxPython?


wxPython is a cross-platform GUI
toolkit for the Python programming language.

It allows Python programmers to create programs with a robust, highly

functional graphical user interface, simply and easily. It is implemented as a

set of Python extension modules that wrap the GUI components of the popular

wxWidgets cross platform library, which is written in C++. Supported platforms

are Microsoft Windows, Mac OS X and macOS, and Linux or other unix-like

systems with GTK2 or GTK3 libraries. In most cases the native widgets are used

on each platform to provide a 100% native look and feel for the application.

What is wxPython Phoenix?


wxPython’s Project Phoenix is a new from-the-ground-up implementation of

wxPython, created with the intent of making wxPython “better, stronger, faster

than he was before.” In other words, this new implementation is focused on

improving speed, maintainability
and extensibility of wxPython, as well as

removing most of the cruft that had accumulated over the long life of Classic

wxPython.

The project has been in development off and on, mostly behind the scenes, for

many years. For the past few years automated snapshot builds have been

available for those adventurous enough to try it, and many people eventually

started using the snapshots in their projects, even for production releases.

While there are still some things on the periphery that need to be completed,

the core of the new wxPython extension modules which wrap the wxWidgets code

has been stable for a long time now.

Due to some things being cleaned
up, reorganized, simplified and dehackified

wxPython Phoenix is not completely backwards compatible with wxPython Classic.

This is intended. In general, however, the API differences tend to be minor

and some applications can use Phoenix with slight, or even no modifications.

In some other cases the correct way to do things was also available in Classic

and it’s only the wrong way that
has been removed from Phoenix. For more

information there is a Migration
Guide document available at:

https://wxpython.org/Phoenix/docs/html/MigrationGuide.html

The new wxPython API reference documentation, including all Python-specific

additions and customizations, and docs for the wx.lib package, is located at:

https://wxpython.org/Phoenix/docs/html/main.html


Robin Dunn

Software Craftsman

http://wxPython.org

You received this message because you are subscribed to the Google Groups “wxPython-users” group.

To unsubscribe from this group and stop receiving emails from it, send an email to wxpython-users+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Congrats, good job!!!

Just a question, why don’t you provide a wheel for Python 3.4?

I’ve always just done builds for the current newest release, and the previous release. Besides, 3 builds per platform, per architecture, per toolkit seems like more than enough. :slight_smile:

-- Robin Dunn
Software Craftsman
···

http://wxPython.org

I did some more manylinux1 experimenting over the weekend, my progress is in a branch that is linked to this issue: https://github.com/wxWidgets/Phoenix/issues/315. Some details about how far I got it are in the README in that branch. The nutshell version is I was able to get a wheel built that was installable on another distro, although it will probably only be usable on fairly new versions of Linux because I wasn’t able to go back as far as CentOS5. However since the embedded GTK libs were just the shared libs and not any themes or theme engines and such the style of the UIs look ancient and rather horrid IMO. Somebody who knows GTK better may be able to take it further than this current state. In addition to determining what other parts of GTK needs to be included, it will likely need either postprocessing of the wheel file, or modifications of the auditwheel tool to enable it to include extra stuff.

-- Robin Dunn
Software Craftsman
···

http://wxPython.org

Good News, I am going to use it now!

Thank you for your effort

···

El lunes, 17 de abril de 2017, 19:55:09 (UTC-5), Robin Dunn escribió:

Announcing wxPython 4.0.0a1


https://pypi.python.org/pypi/wxPython/4.0.0a1

I’m pleased to announce that wxPython’s Project Phoenix has made it’s public

debut as wxPython 4.0.0a1, available from PyPI. Don’t let the fact that it is

marked as an “alpha” release scare you away. It is an alpha simply because

this is the first in several
ways:

* It's the first real release of Phoenix, which is built on a different

  foundation than Classic wxPython was.



* It's the first wxPython release intended to be fully available from PyPI and

   buildable/installable by pip

on all of the supported platforms.

* It's the first release for Python3 (binaries for 3.5 and 3.6 are provided,

  and building for 3.4 is still possible as well). In addition, Python 2.7

  is also supported from the same codebase, with binaries available.



* The wheel files are fully self-contained and relocatable on the supported

  platforms, so they are installable in virtual environments without needing

  to be able to find specific versions of the wxWidgets shared libraries

  (or others) at fixed locations elsewhere in the file-system.



* And as with most alphas, there are still a few things that are not

  finished or polished yet.

But even with all that, many people have been using the pre-release snapshots

of Phoenix for quite a while now, and it has been relatively stable and solid

for them.

What is wxPython?


wxPython is a cross-platform GUI
toolkit for the Python programming language.

It allows Python programmers to create programs with a robust, highly

functional graphical user interface, simply and easily. It is implemented as a

set of Python extension modules that wrap the GUI components of the popular

wxWidgets cross platform library, which is written in C++. Supported platforms

are Microsoft Windows, Mac OS X and macOS, and Linux or other unix-like

systems with GTK2 or GTK3 libraries. In most cases the native widgets are used

on each platform to provide a 100% native look and feel for the application.

What is wxPython Phoenix?


wxPython’s Project Phoenix is a new from-the-ground-up implementation of

wxPython, created with the intent of making wxPython “better, stronger, faster

than he was before.” In other words, this new implementation is focused on

improving speed, maintainability
and extensibility of wxPython, as well as

removing most of the cruft that had accumulated over the long life of Classic

wxPython.

The project has been in development off and on, mostly behind the scenes, for

many years. For the past few years automated snapshot builds have been

available for those adventurous enough to try it, and many people eventually

started using the snapshots in their projects, even for production releases.

While there are still some things on the periphery that need to be completed,

the core of the new wxPython extension modules which wrap the wxWidgets code

has been stable for a long time now.

Due to some things being cleaned
up, reorganized, simplified and dehackified

wxPython Phoenix is not completely backwards compatible with wxPython Classic.

This is intended. In general, however, the API differences tend to be minor

and some applications can use Phoenix with slight, or even no modifications.

In some other cases the correct way to do things was also available in Classic

and it’s only the wrong way that
has been removed from Phoenix. For more

information there is a Migration
Guide document available at:

https://wxpython.org/Phoenix/docs/html/MigrationGuide.html

The new wxPython API reference documentation, including all Python-specific

additions and customizations, and docs for the wx.lib package, is located at:

https://wxpython.org/Phoenix/docs/html/main.html


Robin Dunn

Software Craftsman

http://wxPython.org

I did some more manylinux1 experimenting over the weekend, my progress is
in a branch that is linked to this issue: https://github.com/
wxWidgets/Phoenix/issues/315. Some details about how far I got it are in
the README in that branch. The nutshell version is I was able to get a
wheel built that was installable on another distro, although it will
probably only be usable on fairly new versions of Linux because I wasn't
able to go back as far as CentOS5.

there is a manylinx2 discussion going on -- maybe just target that :slight_smile:

However since the embedded GTK libs were just the shared libs and not any
themes or theme engines and such the style of the UIs look ancient and
rather horrid IMO. Somebody who knows GTK better may be able to take it
further than this current state.

I don't suppose the pyGTK folks are doing anything with this are they?

-CHB

···

On Wed, Apr 26, 2017 at 12:32 AM, Robin Dunn <robin@alldunn.com> wrote:

--

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception

Chris.Barker@noaa.gov

Very happy to see the new release. Congratulations!

···

Am 18.04.2017 um 02:55 schrieb Robin Dunn:

Announcing wxPython 4.0.0a1