Skip to content
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

Librerías permitidas, no permitidas y malas prácticas T4 #503

Open
gecoli opened this issue Jun 3, 2024 · 44 comments
Open

Librerías permitidas, no permitidas y malas prácticas T4 #503

gecoli opened this issue Jun 3, 2024 · 44 comments
Assignees
Labels
IMPORTANTE Aclaraciones importantes Tarea 4 Dudas sobre la T4

Comments

@gecoli
Copy link
Contributor

gecoli commented Jun 3, 2024

Para consultar sobre una librería deben responder esta issue con una pregunta de la siguiente forma:

¿Puedo usar la librería nombre_librería para hacer explicación_de_lo_que_quiero_hacer?

Toda librería que tenga que instalarse no está permitida.

¡Recuerden especificar en su README qué librerías utilizan!


Librerías Permitidas

  • PyQt6
  • PyQtSlots
  • socket
  • threading
  • json
  • pickle
  • app.exec()
  • sys.argv()
  • sys.excepthook()
  • sys.exit()
  • abc
  • collections
  • copy
  • dataclasses
  • os
  • time
  • typing
  • math
  • re
  • random
  • future

Librerías y Herramientas Prohibidas

  • Arcade
  • OpenCV
  • Pyglet
  • QtDesigner
  • Tkinter
  • curses
  • io
  • keyboard
  • matplotlib
  • numpy
  • pandas
  • pathlib
  • pygame
  • shutil
  • signal
  • sympy
  • turtle

☠️ Built-ins Prohibidos

El uso de alguna de las siguiente funciones es automáticamente un 1,0 sin discusión: 😭

Malas prácticas

El uso de las siguientes prácticas será considerado una mala práctica:

  • except Exception: o únicamente except: (excepciones bien capturadas sí estarán permitidas).
  • Variables globales de cualquier tipo, a excepción de los elementos considerados en parametros.py.
  • Import * o imports que no se encuentren al inicio del programa.
  • Paths absolutos y no relativos.
  • No añadir encoding al momento de trabajar archivos.
  • No utilizar señales cuando corresponde.

¡Ánimo y éxito en sus tareas!

@gecoli gecoli added the Tarea 4 Dudas sobre la T4 label Jun 3, 2024
@gecoli gecoli self-assigned this Jun 3, 2024
@gecoli gecoli pinned this issue Jun 3, 2024
@gecoli gecoli added the IMPORTANTE Aclaraciones importantes label Jun 3, 2024
@javibust
Copy link

javibust commented Jun 6, 2024

Hola, se puede usar math?

@gecoli
Copy link
Contributor Author

gecoli commented Jun 6, 2024

¡Buenas tardes, @javibust !

Sí, sí se puede ocupar math.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

@josefa00
Copy link

josefa00 commented Jun 7, 2024

Hola! Entonces lo que vimos en los contenidos de interfaces if name == 'main':
def hook(type, value, traceback) -> None:
print(type)
print(traceback)
sys.excepthook = hook

app = QApplication([])
ventana = MiVentana()
sys.exit(app.exec()) esta prohibido?

@3rdPix
Copy link

3rdPix commented Jun 7, 2024

@josefa00 ¿Qué parte te refieres con exactitud? Todo lo que muestras está en Librerías permitidas.

@AndresFerrerC
Copy link

Se puede usar la librería re (de python)?, Es muy útil para verificar el nombre del usuario

@IsidoraCarmona
Copy link

@josefa00 ¿Qué parte te refieres con exactitud? Todo lo que muestras está en Librerías permitidas.

Me imagino que se refiere a exec(), yo tengo la misma duda, dado que dicen que esta prohibido, pero yo he visto que siempre lo usan

@3rdPix
Copy link

3rdPix commented Jun 8, 2024

@josefa00 @IsidoraCarmona

Entiendo su duda. Lo que ocurre es que son métodos distintos. Lo que está prohibido es la función built-in de python exec. Sin embargo, el objeto QApplication tiene un método exec que es distinto al de python. Este último se utiliza para lanzar la aplicación en el framework de PyQt; por eso es que se muestra en las librerías permitidas como "app.exec()", para indicar que se refiere al objeto aplicación.

@IsidoraCarmona
Copy link

IsidoraCarmona commented Jun 8, 2024

@josefa00 @IsidoraCarmona

Entiendo su duda. Lo que ocurre es que son métodos distintos. Lo que está prohibido es la función built-in de python exec. Sin embargo, el objeto QApplication tiene un método exec que es distinto al de python. Este último se utiliza para lanzar la aplicación en el framework de PyQt; por eso es que se muestra en las librerías permitidas como "app.exec()", para indicar que se refiere al objeto aplicación.

ahh okaa, entonces para abrir un pop up no se puede ocupar exec() cierto?

@3rdPix
Copy link

3rdPix commented Jun 8, 2024

¿Un pop up dentro de tu juego? ¿Cómo un mensaje de error o algo semejante? Los QWidget también tienen el método, y es nuevamente distinto al de python. Por lo que en ese contexto se podría utilizar. Sin embargo, hay otros métodos que vienen con QWidget que pueden cumplir satisfactoriamente (y a veces es hasta mejor) el comportamiento de un pop up. Lo ideal es que puedan escudriñar en la documentación oficial de PyQt para que aprovechen y puedan trabajar bien con la librería,

@gecoli
Copy link
Contributor Author

gecoli commented Jun 10, 2024

¡Buenos días, @AndresFerrerC !

Sí, sí se puede ocupar re.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

@gecoli
Copy link
Contributor Author

gecoli commented Jun 10, 2024

¡Buenos días, @ArthurFJ !

Sí, sí se pueden ocupar pyqtSlots.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

@Vicente1824
Copy link

Holi, ¿puedo usar annotations del módulo __future__? Es que me gustaría tener un thread que tome una ventana de juego como argumento y me gustaría tener la "anotación" de esa clase.

@ArthurFJ
Copy link

Puedo usar QPropertyAnimation de PyQt6.QtCore?

@augustayanez
Copy link

hola! se puede usar random?

@Arielmild
Copy link

Hola, ¿puedo usar la librería Turtle, para el movimiento de objeto?

@waknaudt
Copy link

waknaudt commented Jun 11, 2024

Hola, se puede usar os.walk,os.listdir y os.scandir?

@gecoli
Copy link
Contributor Author

gecoli commented Jun 11, 2024

¡Buenos días!

@Vicente1824 , sí se puede ocupar __future__.

@ArthurFJ , sí se puede ocupar QPropertyAnimation.

@augustayanez , sí se puede ocupar random.

@Arielmild , no, no se puede ocupar Turtle.

@waknaudt , sí, sí se pueden ocupar esos métodos de os.

¡Éxito en sus tareas! ꒰ᐢ. .ᐢ꒱₊˚⊹

@JPBarrosG
Copy link

Hola, se puede usar functools?

@gecoli
Copy link
Contributor Author

gecoli commented Jun 13, 2024

¡Buenas, @JPBarrosG !

¿Puedes explicar a grandes rasgos para qué quieres ocuparla? 👀

@waknaudt
Copy link

Se puede usar sleep() del modulo time?

@ArthurFJ
Copy link

@LemmyLimonLimonada
Copy link

Hola, puedo usar QPainter? Como que queda bonito jkasjksaj 🦅

@gecoli
Copy link
Contributor Author

gecoli commented Jun 13, 2024

¡Buenas tardes, @waknaudt @ArthurFJ y @LemmyLimonLimonada !

Todo lo que piden usar, se pueden usar.

¡Éxito en sus tareas y manténganse secos! ꒰ᐢ. .ᐢ꒱₊˚⊹

@undieguito
Copy link

Buenas tardes, puedo ocupar try/except ValueError: (?)
Saludos.

@scovarrubiasm
Copy link

Hola, en el main.py del cliente y servidor se puede usar except??

@IsidoraCarmona
Copy link

Hola, cuando dicen que no se pueden usar variables gloables se refieren a que no se puede hacer esto?
class Clase:
variable = []
def init(self):
..........

@josegrz
Copy link

josegrz commented Jun 16, 2024

Hola entonces si estría permitido usar exec() para QMessageBox?
def button_clicked(self, s):
dlg = QMessageBox(self)
dlg.setWindowTitle("I have a question!")
dlg.setText("This is a simple dialog")
button = dlg.exec()

    if button == QMessageBox.StandardButton.Ok:
        print("OK!")

este ejemplo es de https://www.pythonguis.com/tutorials/pyqt6-dialogs/

@Jpdelaf
Copy link

Jpdelaf commented Jun 17, 2024

@josegrz
misma duda, escribo esto para que me llegue la notificación cuando te respondan.

@Qjudini
Copy link

Qjudini commented Jun 17, 2024

se puede usar qwidget para las clases del cliente y el juego?

@gecoli
Copy link
Contributor Author

gecoli commented Jun 17, 2024

Buenas tardes!

@undieguito y @scovarrubiasm es posible ocupar Try/Exception siempre y cuando se ocupe de manera debida (especificando la excepción a tratar y no un simple except Exception).

@IsidoraCarmona , eso se llama variable de clase, lo cual está permitido.

@josegrz , @Jpdelaf Ese exec() es distinto al prohibido, así que está permitido.

@Qjudini , sí, se puede ocupar.

¡Éxito en sus tareas! ꒰ᐢ. .ᐢ꒱₊˚⊹

@rinsoni
Copy link

rinsoni commented Jun 18, 2024

holaa, se puede usar break de casualidad? lo pienso usar cuando un cliente se desconecte de golpe o haya algun error

@jfierro2801
Copy link

Hola, se puede usar grabKeyboard?

@nicolaslindl
Copy link

hola, se puede usar qsplitter? para hacer las divisiones de la pantalla en la interfaz grafica de la ventana de juego

@gecoli
Copy link
Contributor Author

gecoli commented Jun 18, 2024

¡Buenas tardes!

@rinsoni , no es recomendable ni una buena práctica ocupar break, pero tampoco será penalizado su correcto uso.

@jfierro2801 , si te requieres a la función de Qwidget, sí, sí se puede.

@nicolaslindl , sí, sí se puede ocupar.

¡Éxito en sus tareas! ꒰ᐢ. .ᐢ꒱₊˚⊹

@brbaracanales
Copy link

Hola! se puede usar glob.glob()?

@gecoli
Copy link
Contributor Author

gecoli commented Jun 19, 2024

Buenas noches, @brbaracanales

Lamento la confusión, sí se puede!

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

@Bonjour1X
Copy link

Bonjour1X commented Jun 19, 2024

¿puedo usar "os.path.dirname("file")","os.path.abspath("file")", como os.path.join("...", "...") para abrir o colocar "algo" al menú/tarea? ya que lo ví en una ayudantia y estaba viendo como adaptarlo con los demas os.path y me esta sirviendo en un momento

@gecoli
Copy link
Contributor Author

gecoli commented Jun 19, 2024

Buenas noches, @Bonjour1X !

Sí, sí se puede ocupar.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

@R3Y3X
Copy link

R3Y3X commented Jun 21, 2024

hola esta perimitido usar self.exec() para un Qthread ?

@gecoli
Copy link
Contributor Author

gecoli commented Jun 21, 2024

Buenas, @R3Y3X

¿Puedes explicar para qué quieres ocuparlo en vez de run? 👀

@BenjaMedinaPUC
Copy link

Hola! se puede usar itemgetter de operator? para ordenar numeros
estaré atento a la respuesta

@gecoli
Copy link
Contributor Author

gecoli commented Jun 21, 2024

Buenas, @BenjaMedinaPUC !

Sí, sí se puede.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

@R3Y3X
Copy link

R3Y3X commented Jun 21, 2024

Buenas, @gecoli

¿Puedes explicar para qué quieres ocuparlo en vez de run? 👀
utilizo run pero lueg utilizo self.exec() para que cuando el usuario haga mas movimientos de pepa no se caiga el programa y pueda ejecutarlos uno detras de otros

@gecoli
Copy link
Contributor Author

gecoli commented Jun 21, 2024

@R3Y3X

Puedes ocuparlo!

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IMPORTANTE Aclaraciones importantes Tarea 4 Dudas sobre la T4
Projects
None yet
Development

No branches or pull requests