Python 3 é o futuro do Python, está amplamente disponível nos ambientes em que Mopidy está implantado e estou bastante interessado em poder usar asyncio, que requer Python 3.3+. Não há nada fora do projeto Mopidy nos impedindo de mudar para Python 3.
Este é o bug principal para rastrear nosso caminho para a execução do Mopidy no Python 3.
from __future__ import unicode_literals
todos os lugares e marque as strings binárias com b'foo'
.2to3
.Ei, eu gostaria de ajudar com a migração do Python 3, algo em particular que está em andamento? não quero pisar no pé de ninguém
Eu comecei um branch em jodal / feature / py3-compat onde eu:
Não toquei nisso desde novembro, exceto que rebasei o branch em cima do Mopidy 2.0.0 alguns dias atrás. O status atual é que eu consertei cerca de 1000 testes, com cerca de 240 restantes.
O plano a seguir é:
ok, vou fazer um fork desse branch e tentar consertar todos os testes que puder
Olá pessoal, alguma novidade sobre esse assunto?
Restam 3 anos e meio para isso 😉
Há alguma atualização sobre isso?
Portar para Python 3 é minha tarefa de maior prioridade pessoal ao trabalhar no Mopidy, o problema é que estive muito ocupado com o trabalho no ano passado.
Meu plano atual, em ordem aproximada, é:
Como você pode ver, há algumas tarefas que devem ser realizadas antes de iniciar a transferência propriamente dita. Dito isso, a maior parte do trabalho já está concluída: Reescrever o pyspotify para funcionar no Python 3 (dois anos do meu tempo livre foram gastos aqui) e portar o Mopidy para o GStreamer 1.x (uma licença paternidade do tempo livre gasto aqui).
Vou chegar lá, mas leva tempo. Se as pessoas quiserem ajudar, acho que o mais útil seria ajudar as extensões de porta para Python 3 assim que o Mopidy suportar 2 + 3.
Obrigado pela atualização, @jodal.
Acho que é uma boa ideia mudar para o Python3.
Sou novo no mopidy e nunca contribuí para isso, você acha que eu
pode te ajudar com alguma coisa?
El mié., 22 de mar. de 2017 a la (s) 07:08, Frederick Gnodtke <
notificaçõ[email protected]> escribió:
Obrigado pela atualização, @jodal https://github.com/jodal .
-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/mopidy/mopidy/issues/779#issuecomment-288352544 ou mudo
o segmento
https://github.com/notifications/unsubscribe-auth/AHQMO8UqLNKzfVQZAZJ3Pnjx2N7MsHg4ks5roPMEgaJpZM4CMq8p
.
Qualquer ajuda com o projeto que libere parte da carga de manutenção ajuda com os grandes objetivos complicados como Python 3, já que libera tempo dos mantenedores para trabalhar nas questões maiores ou para fazer a revisão adequada do código em contribuições maiores, que podem ser bastante exaustivo e demorado. Dois exemplos principais estão ajudando outros usuários a depurar seus problemas e reproduzir possíveis bugs, minimizar as etapas necessárias para reproduzir e documentar os resultados nos problemas.
@jodal Onde podemos ver seu trabalho com python3?
Saudações
@jodal o branch py3-compat que você mencionou parece um pouco ... abandonado. Existe um novo em algum lugar?
Estou pensando em escrever uma extensão e prefiro pesquisar alguns bugs py3 no branch mopidy instável em vez de me lembrar de soluções alternativas py2 desagradáveis.
Qual é o status disso? existe uma versão do mopidy que pode ser usado com python3?
A dependência pylast deixará de oferecer suporte para o Python 2 legado em breve: https://github.com/pylast/pylast/issues/265
Oi,
Atualmente mantenho o pylast no Debian. Pretendo fazer upload da versão mais recente ([1]) que não suporta mais Python 2.7
Pretendo publicar esta versão no final de fevereiro, se mopidy ainda usa Python 2 não será incluído
no próximo lançamento do Debian, o que pode ser uma pena, já que o mopidy é um software incrível: smiley:
Existe algum ramo oficial onde isso está acontecendo? Eu estou querendo ajudar isso a acontecer
Cumprimentos
@jodal As extensões são o bloqueador aqui? Em caso afirmativo, sugiro abrir um problema para cada extensão e referenciá-los aqui para manter o controle. Se você puder dar algumas instruções na edição sobre quais mudanças provavelmente serão necessárias, então as pessoas que não estão tão familiarizadas com o Python (como eu) ainda podem ajudar.
PS Estou feliz em ajudar com as extensões que uso (GMusic, Iris, Podcast, Scrobbler, Spotify), mas não sei realmente o que fazer no momento.
Ei pessoal, alguém pode esclarecer o status da adaptação para python3? Temos alguma estimativa de quando a primeira versão do python3 será lançada? Obrigado.
Ainda estou empenhado em portar o Mopidy para o Python 3. Não vou deixar o Mopidy morrer com o Python 2.
A maior parte do trabalho de nos mover para o Python 3 foi feito anos atrás para garantir que todas as nossas dependências funcionassem no Python 3:
Como você provavelmente pode ler nas entrelinhas da longa história desse problema e do estado do rastreador de problemas, este projeto e o código aberto em geral não têm sido minha prioridade desde que deixei de trabalhar em uma grande empresa para ser uma startup três anos atrás.
No entanto, estou lentamente começando a pegar meus projetos de código aberto novamente. Estou tentando me concentrar em um projeto por vez e lançá-lo antes de assumir o próximo. Até agora, Mopidy.js e Mopidy-MPRIS tem recebido carinho e carinho. Atualmente, estou trabalhando em uma nova versão do Pykka , que entre outras pequenas melhorias irá reduzir o tempo de inicialização de muitas configurações do Mopidy por um fator enorme.
Depois que o Pykka 2 for lançado, meu objetivo principal é mover o Mopidy para o Python 3.
Não vou dar nenhuma estimativa de tempo para quando esse trabalho estará concluído, pois isso seria simplesmente me preparar para o fracasso. Tudo depende muito de fatores externos e motivação.
Quanto a ajudar, não vejo que haja muito que novos contribuidores possam fazer para ajudar de maneira significativa e direta. Ainda não voltei a trabalhar com código aberto em uma cadência previsível e regular, então as revisões de relações públicas rapidamente se tornariam desmotivantes para ambas as partes. Conforme mencionado anteriormente nesta edição, qualquer ajuda para reduzir a carga de manutenção geral sempre ajuda indiretamente.
Quanto a outros desenvolvedores principais, tenho certeza que eles seriam capazes de ajudar, mas todos nós temos nossas prioridades e projetos. Não vou esperar que nosso tempo e motivação se alinhem. Se eles aderirem assim que eu começar a usar o Mopidy 3 da maneira adequada, seria ótimo, mas não tenho expectativas.
Colocando todas as minhas divagações sobre a vida e tudo de lado, esta não é uma tarefa gigantesca nem uma tarefa com a qual eu não esteja familiarizado. É principalmente uma questão de completar as outras coisas em andamento para que isso possa se tornar o foco principal por um tempo.
Desde que escrevi o último plano aqui em março de 2017, a adoção do Python 3 foi tão longe que não vejo mais sentido em dar passos graduais do Python 2 apenas via 2 + 3 para o Python 3 apenas. O Mopidy 2.x tem nos servido muito bem por três anos e será um lugar bom e estável para deixar aqueles que estão presos no Python 2 por qualquer motivo.
Assim, revisando o plano de março de 2017, imagino um processo como este:
pip install mopidy
, mas torna possível executar pip install --pre mopidy
para instalar o pré-lançamento para teste de extensões portadas.Como já se passaram cinco meses, acho que é hora de atualizar esse problema. O lançamento do Pykka de que falei da última vez foi lançado como Pykka 2.0 seis semanas atrás. Desde então, comecei a trabalhar no Mopidy novamente:
release-2.2
.develop
, que se tornará o Mopidy 3.0, a maior parte do material obsoleto foi removido.O próximo passo para mim é provavelmente:
Há algo que eu possa fazer para ajudar a fazer com que o mopidy core ou o plug-in mopidy-soundcloud funcionem com o python3?
Obrigado pelo seu trabalho até agora @jodal!
Estou me perguntando, como devemos instalar os documentos ao usar a versão Python 3 do Sphinx para criá-los (pedindo para fins de empacotamento)?
Eu costumava fazer make -C docs SPHINXBUILD=sphinx-build-2 man
mas mudando isso para sphinx-build-3
apenas erros:
make: Entering directory '/home/builder/aports/community/mopidy/src/Mopidy-3.0.0a1/docs'
sphinx-build-3 -b man -d _build/doctrees . _build/man
Running Sphinx v1.8.4
Configuration error:
The configuration file (or one of the modules it imports) called sys.exit()
Isso acontece em 2.2.3 e 3.0.0a1. Ou esta parte ainda não foi portada?
Dado que a v3 vai quebrar a compatibilidade com versões anteriores de qualquer maneira, e python2 terá o fim da vida em janeiro, há uma razão para manter a compatibilidade com python2 na v3?
@tmccombs disse:
Dado que a v3 vai quebrar a compatibilidade com versões anteriores de qualquer maneira, e python2 terá o fim da vida em janeiro, há uma razão para manter a compatibilidade com python2 na v3?
Não, não estamos planejando manter a compatibilidade do Python 2 no Mopidy 3.
Citando-me de fevereiro:
Desde que escrevi o último plano aqui em março de 2017, a adoção do Python 3 foi tão longe que não vejo mais sentido em dar passos graduais do Python 2 apenas via 2 + 3 para o Python 3 apenas. O Mopidy 2.x tem nos servido muito bem por três anos e será um lugar bom e estável para deixar aqueles que estão presos no Python 2 por qualquer motivo.
@PureTryOut disse:
Isso acontece em 2.2.3 e 3.0.0a1. Ou esta parte ainda não foi portada?
Nenhum Mopidy foi portado para Python 3 ainda. Acabamos de fazer outras simplificações e remover coisas obsoletas para tornar a transição mais fácil. Depois de portar, vamos construir os documentos com Sphinx rodando em Python 3.
Posso aconselhar que a próxima versão (2.4.0?) Seja compatível com Python 3? A maioria das distribuições está trabalhando para se livrar de seus pacotes Python 2. No meu caso, o Alpine Linux está descartando o Python 2 na próxima versão (3.11, final de janeiro do próximo ano), o que significa que o Mopidy será retirado dos repositórios se não for compatível com o Python 3 até então.
O Mopidy 3.0 será compatível com Python 3. O plano é lançá-lo antes do final do ano.
Olá @jodal , posso ter alguns ciclos sobressalentes nas próximas semanas para ajudar com algumas funcionalidades do Python 3. Tanto no mopidy diretamente como nas extensões. Você tem algum problema específico para resolver?
Oi @zubieta!
Recentemente, mesclamos uma configuração de teste que executa com sucesso ~ 10% do conjunto de testes no Python 3. Há alguns PRs a serem mesclados em breve que aumentam para ~ 20%. Por favor, verifique quais PRs já estão abertos, para que você não duplique nenhum trabalho, e veja a descrição de # 1809 para um guia passo a passo sobre como portar mais alguns módulos e seus testes.
As extensões seguirão assim que o núcleo do Mopidy estiver em execução no Python 3.
Acho que é hora de uma atualização de status no Mopidy e Python 3 ...
Cada um dos testes de 2016 no conjunto de testes de Mopidy agora é executado em Python 2.7 e Python 3.7. Todo esse trabalho está mesclado no branch develop
. Um grande obrigado a @kingosticks por ajudar com o esforço de portabilidade!
Acabei de lançar o ramo develop
no estado em que se encontra para o PyPI como Mopidy 3.0.0a2 . Pode ser instalado com:
python3.7 -m pip install --pre mopidy
Esta versão não foi sujeita a nenhum teste extensivo, exceto ter um conjunto de testes de aprovação, respondendo a algumas solicitações em MPD e HTTP e reproduzindo um punhado de arquivos MP3.
Mopidy 3.0.0a2 provavelmente será a única versão do Mopidy a oferecer suporte a Python 2 e 3. Imediatamente começaremos a remover o suporte a Python 2.7 e tornar Mopidy uma base de código Python mais limpa e moderna.
O plano para uma versão final é aproximadamente o seguinte:
Em paralelo com a marcha em direção ao 3.0 final, precisamos de ajuda com o resto do ecossistema de 122 pacotes no PyPI encontrados pesquisando por "mopidy".
Para cada extensão de seu interesse:
76 commits, 204 arquivos alterados, 9832 inserções (+), 9612 exclusões (-) depois, temos outro pré-lançamento: Mopidy 3.0.0a3 agora está no PyPI. Pode ser instalado com:
python3 -m pip install --pre mopidy
Novo desde 3.0.0a2:
mopidy.compat
se foi.# encoding: utf-8
comentários sumiram.from __future__ ...
importações acabaram.object
se foram..encode()
e .decode()
não incluem mais um argumento "utf-8"
explícito.black
. :coração preto:isort
agora estão configurados e podem ser usados para limpar importações quando necessário.mock
é substituído por unittest.mock
.assert
, o que significa melhor legibilidade e melhores mensagens de erro.%
e .format()
são substituídas por strings f.setup.py
foi minimizado e substituído por um declarativo setup.cfg
.tox.ini
, dev-requirements.txt
e docs/requirements.txt
são todas substituídas por "extras" em setup.cfg
. Isso significa que as dependências de desenvolvimento agora estão instaladas com python3 -m pip install -e ".[dev]"
.O caminho à frente ainda se parece com o que esbocei no comentário anterior.
Com relação ao núcleo Mopidy, acho que terminamos aqui.
O resto do caminho para a final do Mopidy 3.0 é rastreado na etapa v3.0:
https://github.com/mopidy/mopidy/milestone/55
A transferência das principais extensões para Python 3 é rastreada nesta placa do projeto:
https://github.com/orgs/mopidy/projects/2
Se você testar o Mopidy no Python 3 em um futuro próximo, abra as edições para quaisquer problemas que encontrar!
Comentários muito úteis
Ainda estou empenhado em portar o Mopidy para o Python 3. Não vou deixar o Mopidy morrer com o Python 2.
História
A maior parte do trabalho de nos mover para o Python 3 foi feito anos atrás para garantir que todas as nossas dependências funcionassem no Python 3:
Como você provavelmente pode ler nas entrelinhas da longa história desse problema e do estado do rastreador de problemas, este projeto e o código aberto em geral não têm sido minha prioridade desde que deixei de trabalhar em uma grande empresa para ser uma startup três anos atrás.
No entanto, estou lentamente começando a pegar meus projetos de código aberto novamente. Estou tentando me concentrar em um projeto por vez e lançá-lo antes de assumir o próximo. Até agora, Mopidy.js e Mopidy-MPRIS tem recebido carinho e carinho. Atualmente, estou trabalhando em uma nova versão do Pykka , que entre outras pequenas melhorias irá reduzir o tempo de inicialização de muitas configurações do Mopidy por um fator enorme.
Próximo
Depois que o Pykka 2 for lançado, meu objetivo principal é mover o Mopidy para o Python 3.
Não vou dar nenhuma estimativa de tempo para quando esse trabalho estará concluído, pois isso seria simplesmente me preparar para o fracasso. Tudo depende muito de fatores externos e motivação.
Quanto a ajudar, não vejo que haja muito que novos contribuidores possam fazer para ajudar de maneira significativa e direta. Ainda não voltei a trabalhar com código aberto em uma cadência previsível e regular, então as revisões de relações públicas rapidamente se tornariam desmotivantes para ambas as partes. Conforme mencionado anteriormente nesta edição, qualquer ajuda para reduzir a carga de manutenção geral sempre ajuda indiretamente.
Quanto a outros desenvolvedores principais, tenho certeza que eles seriam capazes de ajudar, mas todos nós temos nossas prioridades e projetos. Não vou esperar que nosso tempo e motivação se alinhem. Se eles aderirem assim que eu começar a usar o Mopidy 3 da maneira adequada, seria ótimo, mas não tenho expectativas.
Colocando todas as minhas divagações sobre a vida e tudo de lado, esta não é uma tarefa gigantesca nem uma tarefa com a qual eu não esteja familiarizado. É principalmente uma questão de completar as outras coisas em andamento para que isso possa se tornar o foco principal por um tempo.
Mopidy 3
Desde que escrevi o último plano aqui em março de 2017, a adoção do Python 3 foi tão longe que não vejo mais sentido em dar passos graduais do Python 2 apenas via 2 + 3 para o Python 3 apenas. O Mopidy 2.x tem nos servido muito bem por três anos e será um lugar bom e estável para deixar aqueles que estão presos no Python 2 por qualquer motivo.
Assim, revisando o plano de março de 2017, imagino um processo como este:
pip install mopidy
, mas torna possível executarpip install --pre mopidy
para instalar o pré-lançamento para teste de extensões portadas.