%global _empty_manifest_terminate_build 0
Name:		python-py2048base
Version:	0.48
Release:	1
Summary:	Python clone of the famous 2048 game.
License:	GPL
URL:		https://github.com/dasld/py2048base
Source0:	https://mirrors.aliyun.com/pypi/web/packages/bc/a3/2ee7cd0a65aaa179da7f997f7c9df6c0a6269f7f794efd68ec55cac85c0f/py2048base-0.48.tar.gz
BuildArch:	noarch

Requires:	python3-appdirs
Requires:	python3-pytest

%description
The backend takes input (in the form of a `py2048.Directions` object),
processes it, and waits for the next input.
This loops until
the player exits, or
the player wins for the first time in this session, or
the player runs out of valid movements.
It's a pure-Python implementation of the original game logic:
it makes equal numbers merge into their sum, "moving" from one tile into
another, and so on.
The backend deals only with plain Python data, such as `int` and `dict`;
it is up to each frontend to actually collect the input and display the
updated game state as a (hopefully) pretty interface.
To write such frontend, subclass `py2048.basefrontend.Base2048Frontend`
and override the following methods:
* `choose_direction`
* `on_player_quit`
* `on_player_victory`
* `on_player_overvictory`
* `on_player_loss`
`choose_direction` must return exactly one `py2048.Directions` object.
If writing a graphical frontend (a GUI), you'll probably want to create a "worker"
thread that runs the backend's loop and waits for a condition when it reaches
the `choose_direction` call.
The main thread will then be responsible for storing user input somewhere accessible
by the worker thread and "waking it up".
The other overriden methods shouldn't return anything.
`player_quit` is called when the player exits the game before winning or
losing.
An "overvictory" is what happens when the grid "jams" (runs out of valid movements)
but the player had already won (had already reached the target goal number).

%package -n python3-py2048base
Summary:	Python clone of the famous 2048 game.
Provides:	python-py2048base
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-py2048base
The backend takes input (in the form of a `py2048.Directions` object),
processes it, and waits for the next input.
This loops until
the player exits, or
the player wins for the first time in this session, or
the player runs out of valid movements.
It's a pure-Python implementation of the original game logic:
it makes equal numbers merge into their sum, "moving" from one tile into
another, and so on.
The backend deals only with plain Python data, such as `int` and `dict`;
it is up to each frontend to actually collect the input and display the
updated game state as a (hopefully) pretty interface.
To write such frontend, subclass `py2048.basefrontend.Base2048Frontend`
and override the following methods:
* `choose_direction`
* `on_player_quit`
* `on_player_victory`
* `on_player_overvictory`
* `on_player_loss`
`choose_direction` must return exactly one `py2048.Directions` object.
If writing a graphical frontend (a GUI), you'll probably want to create a "worker"
thread that runs the backend's loop and waits for a condition when it reaches
the `choose_direction` call.
The main thread will then be responsible for storing user input somewhere accessible
by the worker thread and "waking it up".
The other overriden methods shouldn't return anything.
`player_quit` is called when the player exits the game before winning or
losing.
An "overvictory" is what happens when the grid "jams" (runs out of valid movements)
but the player had already won (had already reached the target goal number).

%package help
Summary:	Development documents and examples for py2048base
Provides:	python3-py2048base-doc
%description help
The backend takes input (in the form of a `py2048.Directions` object),
processes it, and waits for the next input.
This loops until
the player exits, or
the player wins for the first time in this session, or
the player runs out of valid movements.
It's a pure-Python implementation of the original game logic:
it makes equal numbers merge into their sum, "moving" from one tile into
another, and so on.
The backend deals only with plain Python data, such as `int` and `dict`;
it is up to each frontend to actually collect the input and display the
updated game state as a (hopefully) pretty interface.
To write such frontend, subclass `py2048.basefrontend.Base2048Frontend`
and override the following methods:
* `choose_direction`
* `on_player_quit`
* `on_player_victory`
* `on_player_overvictory`
* `on_player_loss`
`choose_direction` must return exactly one `py2048.Directions` object.
If writing a graphical frontend (a GUI), you'll probably want to create a "worker"
thread that runs the backend's loop and waits for a condition when it reaches
the `choose_direction` call.
The main thread will then be responsible for storing user input somewhere accessible
by the worker thread and "waking it up".
The other overriden methods shouldn't return anything.
`player_quit` is called when the player exits the game before winning or
losing.
An "overvictory" is what happens when the grid "jams" (runs out of valid movements)
but the player had already won (had already reached the target goal number).

%prep
%autosetup -n py2048base-0.48

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-py2048base -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Thu Jun 08 2023 Python_Bot <Python_Bot@openeuler.org> - 0.48-1
- Package Spec generated