3 pontos por GN⁺ 2024-08-17 | 1 comentários | Compartilhar no WhatsApp
  • PyScript é uma plataforma open source que permite executar código Python no navegador, transformando a própria página web em um ambiente de execução de Python
  • Ao combinar a universalidade da web com o ecossistema do Python, destaca a ideia de que onde houver um navegador, será possível executar Python
  • Como os apps funcionam no navegador sem instalações complexas, é possível criar aplicativos web com a sintaxe fácil de aprender do Python
  • O código é executado no navegador do usuário, reduzindo a necessidade de infraestrutura cara, e os resultados podem ser compartilhados por URL na web
  • O projeto mira tanto iniciantes quanto usuários avançados, tendo como características principais facilidade, expressividade, escalabilidade, compartilhamento, universalidade, segurança e poder

Ambiente de execução de Python dentro do navegador

  • PyScript é uma plataforma open source para executar Python no navegador
  • Um exemplo é executar código Python dentro de HTML usando script type="py"
    • No código de exemplo, print('You can!') é executado dentro do documento do navegador
  • A direção central do PyScript é combinar dois ecossistemas tecnológicos: a web e o Python
    • A web é uma plataforma de computação universal em escala global
    • Python é uma das linguagens de programação mais populares do mundo
  • Como resultado, a principal mensagem é que onde houver um navegador, será possível executar Python

Como começar e características da plataforma

  • É possível experimentar gratuitamente e com facilidade em PyScript.com
  • A documentação atende tanto iniciantes quanto usuários avançados
  • Nos recursos da comunidade, é possível ver o que pode ser criado com PyScript
  • Você pode se conectar com outros usuários do PyScript pelo Discord
  • As características destacadas pelo PyScript são as seguintes
    • Easy: os apps rodam no navegador sem instalações complexas
    • Expressive: permite criar apps com uma linguagem poderosa, popular e fácil de aprender como Python
    • Scalable: como o código roda no navegador do usuário, não há necessidade de infraestrutura cara
    • Shareable: os aplicativos podem ser compartilhados por URL na web
    • Universal: onde o navegador roda, o código também roda
    • Secure: funciona sobre o navegador, uma plataforma de computação já comprovada
    • Powerful: aproveita ao mesmo tempo as vantagens da web e do Python

1 comentários

 
GN⁺ 2024-08-17
Opiniões no Hacker News
  • Se quiser ver um exemplo de uso, há um dashboard em Panel de estatísticas de criminalidade de Dallas aqui: https://crimede-coder.com/graphs/Dallas_Dashboard
    Leva cerca de 1 minuto para iniciar, incluindo a instalação de várias bibliotecas Python e o carregamento de um dataset externo de 5 MB. Depois que sobe, fica bem responsivo e também funciona bem no iPhone
    Muitas empresas com as quais trabalho usam a versão gratuita do Tableau e atualizam os dados manualmente, porque a versão gratuita não permite conexão direta com repositórios de dados. Esta é uma alternativa gratuita, e deixei o GitHub Actions gerar um arquivo CSV compactado para ser importado pelo ambiente

    • O uso de memória parece bem alto. Pelo gerenciador de tarefas do navegador, esta aba está usando 657 MB, enquanto a maioria das outras abas fica por volta de 25 a 70 MB
    • Foi dito que “leva cerca de 1 minuto para iniciar”, mas, ao abrir em um iPad Pro de 13 polegadas do outono de 2023, em uma rede de banda larga da região de NYC com WiFi, levou cerca de 8 segundos desde clicar no link até o spinner desaparecer e os filtros ficarem ativos
      Eu achava que inicializar Python o bastante para rodar um app Panel dentro do Safari no iPad levaria muito mais do que 8 segundos. Um refresh com Shift levou cerca de 6 segundos
    • Fico curioso para saber qual era o gargalo. Em uma rede de banda larga doméstica, levou cerca de 20 segundos
    • Bem legal. Para quem se interessa por dashboards de estatísticas criminais, deixo também o do NYPD: https://compstat.nypdonline.org/
    • O site é legal. Se “muitas empresas usam a versão gratuita do Tableau e atualizam os dados manualmente”, fico me perguntando por que não usam algo como React ou Angular
      Também fico pensando se o problema é que precisam de Python por causa da análise de dados e não querem rodar isso no lado do servidor por causa do custo de servidor
  • Fiquei confuso olhando a página inicial e, mesmo depois de ler a documentação, ainda não sei exatamente o que isto é
    Mexendo um pouco por conta própria, consegui fazer um site mostrar “Hello World” ao inseri-lo. Parece um script que procura scripts com type="py" e transpila de Python para JavaScript por meio do Pyodide
    Mas a demo da página inicial é um REPL, e o título diz “plataforma”, então continuo confuso

    • Em vez de “transpilar Python para JavaScript”, o PyScript parece mais executar código Python diretamente. Ele usa um interpretador Python compilado para WebAssembly, usando o CPython do Pyodide ou o MicroPython
    • Não gosto do uso de termos vagos e mal definidos como “plataforma”. Bastaria dizer que é um framework que avalia, com Pyodide, código dentro de tags de script para Python
    • Não li de fato a documentação nem o código-fonte, mas imagino que o pacote js seja mapeado para o objeto window real e ofereça uma API para chamar métodos do DOM por meio de algum objeto Proxy
    • Encontrei informações sobre o terminal aqui: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      Eu esperava conseguir executar Python no console do navegador
  • Como isto é diferente do Pyodide? https://pyodide.org/en/stable/

    • Pyodide é um porte do CPython para a plataforma WebAssembly. PyScript é um framework que usa o Pyodide para permitir desenvolver aplicações Python no navegador. Como pitch de elevador, seria algo como “Python em tags de script via Pyodide”
    • Isto usa Pyodide. Mesmo que não seja exatamente um transpilador, parece mais próximo de um transpilador de Python para JS, e serve para criar apps de navegador em Python. Então dá para ver como Pyodide + APIs do navegador
    • Pyodide é um runtime
      PyScript pode usar Pyodide ou MicroPython, e o MicroPython é de fato bem pequeno. Em cima do runtime, o PyScript vai além de simplesmente executar código Python, oferecendo conveniências e melhorias de qualidade de vida para usar Python de fato em programação web
    • É um wrapper
  • Recentemente mergulhei bastante em usar PyScript para executar apps Python de CLI no navegador
    Pareceu meio gambiarra o tempo todo, especialmente quando entram dependências. Não consegui usar Pydantic 2.x, então tive que criar uma classe wrapper de contorno, e tentei colocar toda a lógica em arquivos Python, mas faltavam alguns recursos e tive que colocar parte em JavaScript
    Pode ser ok quando você quer colocar uma UI simples e lógica de UI customizada por cima de código Python, mas Streamlit ou Gradio talvez sejam mais adequados
    Repositório no GitHub: https://github.com/data-catering/data-contract-playground
    Site: https://data-catering.github.io/data-contract-playground/

    • À medida que muitos projetos Python vêm se tornando Rustificados, fica desnecessariamente mais difícil usar Python em qualquer lugar
  • É difícil encontrar casos de uso reais. Se você quiser rodar um modelo de machine learning, pode compilá-lo para ONNX: https://onnxruntime.ai/docs/tutorials/web/
    Fico pensando se isto seria eficiente para criar apps baseados no navegador em vez de JS/TS

    • Algumas pessoas talvez não queiram tocar em JS/TS
    • Linguagens de programação deveriam ser separadas do ambiente de implantação
  • Seria bom poder escrever scripts no Firefox para manipular o navegador. A ideia seria executar avaliações em qualquer etapa desejada, como no momento do GET, depois de todos os GETs, antes/depois da avaliação de JavaScript
    Fico curioso se existe alguma ferramenta que permita fazer isso e também acessar, a partir do host, todos os recursos do Python

  • Isso não é o mesmo conceito do Brython? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

  • Fazendo um pouco de autopromoção, criei com PyScript um framework de frontend reativo mais opinativo. Foi um pouco inspirado no Vue.js: https://puepy.dev

  • Há algum tempo, criei um renderizador de Markdown com isso. O código-fonte bem simples pode ser visto aqui: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    O app provavelmente não roda muito bem em dispositivos móveis, mas deve funcionar bem no desktop. Usei esse código em uma aplicação de blog que estava escrevendo em Django

  • Em qualquer configuração de WASM, a grande limitação de acabar não podendo chamar muitas APIs nem fazer scraping de sites por causa de CORS é muito incômoda
    Claro que CORS é importante para impedir coisas como XSS, mas seria bom haver alguma alternativa além de criar um proxy que remove CORS. Fazendo isso, sobra um IP que não é residencial e tem maior chance de ser bloqueado

    • Esse problema só se aplica quando o isolamento entre origens está ativado com COOP e COEP?