<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mehman Mammadov</title>
    <description>The latest articles on DEV Community by Mehman Mammadov (@mammadov115).</description>
    <link>https://dev.to/mammadov115</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1619321%2F3d894238-47fb-422a-8330-fbc0f26a61f8.jpg</url>
      <title>DEV Community: Mehman Mammadov</title>
      <link>https://dev.to/mammadov115</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mammadov115"/>
    <language>en</language>
    <item>
      <title>Uv nədir və nə işə yarayır?</title>
      <dc:creator>Mehman Mammadov</dc:creator>
      <pubDate>Wed, 23 Jul 2025 07:55:29 +0000</pubDate>
      <link>https://dev.to/mammadov115/uv-ndir-v-n-is-yarayir-4a1f</link>
      <guid>https://dev.to/mammadov115/uv-ndir-v-n-is-yarayir-4a1f</guid>
      <description>&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; — Python layihələri üçün &lt;strong&gt;yüksək performanslı, təhlükəsiz və müasir paket meneceri&lt;/strong&gt;dir. Onu Astral şirkəti (&lt;a href="https://astral.sh" rel="noopener noreferrer"&gt;https://astral.sh&lt;/a&gt;) hazırlayıb və məqsədi &lt;code&gt;pip&lt;/code&gt;, &lt;code&gt;virtualenv&lt;/code&gt;, &lt;code&gt;pip-tools&lt;/code&gt;, &lt;code&gt;venv&lt;/code&gt;, &lt;code&gt;pyenv&lt;/code&gt;, &lt;code&gt;pipenv&lt;/code&gt;, &lt;code&gt;poetry&lt;/code&gt; kimi bir çox alətin yerinə &lt;strong&gt;vahid, sürətli və daha etibarlı alternativ&lt;/strong&gt; təqdim etməkdir.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;uv&lt;/code&gt; nə edir?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; aşağıdakı funksiyaları bir araya gətirir:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Funksiya&lt;/th&gt;
&lt;th&gt;Əvəz etdiyi alətlər&lt;/th&gt;
&lt;th&gt;Təsviri&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Paket asılılıqlarının idarəsi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;pip&lt;/code&gt;, &lt;code&gt;pip-tools&lt;/code&gt;, &lt;code&gt;requirements.txt&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;uv add&lt;/code&gt;, &lt;code&gt;uv lock&lt;/code&gt;, &lt;code&gt;uv sync&lt;/code&gt; kimi əmrlərlə Python paketlərini əlavə edib kilidləyir.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python versiyalarının idarəsi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;pyenv&lt;/code&gt;, &lt;code&gt;asdf&lt;/code&gt;, &lt;code&gt;conda&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;uv python install&lt;/code&gt;, &lt;code&gt;uv python pin&lt;/code&gt; ilə müəyyən Python versiyalarını yükləyib layihəyə tətbiq edir.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtual mühit (venv) idarəsi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;virtualenv&lt;/code&gt;, &lt;code&gt;venv&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;uv venv&lt;/code&gt; və &lt;code&gt;.venv/&lt;/code&gt; avtomatik idarəsi ilə izolyasiya olunmuş mühit yaradır.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;İntensiv performans&lt;/td&gt;
&lt;td&gt;Heç biri&lt;/td&gt;
&lt;td&gt;Rust dilində yazıldığı üçün çox sürətlidir (pip-dən 8-10 dəfə sürətli ola bilir).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker və CI/CD dəstəyi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;poetry&lt;/code&gt;, &lt;code&gt;pip-tools&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;uv&lt;/code&gt;-un Docker üçün xüsusi görüntüləri var və CI mühitlər üçün &lt;code&gt;setup-uv&lt;/code&gt; GitHub Action mövcuddur.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Nə Üçün &lt;code&gt;uv&lt;/code&gt;-a Keçməli?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Üstünlüklər:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sürət&lt;/strong&gt; – &lt;code&gt;pip&lt;/code&gt; və &lt;code&gt;poetry&lt;/code&gt;-dən daha sürətli.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qx01jgsicwawj6vbiw4.png" alt=" raw `pip` endraw  və  raw `poetry` endraw -dən daha sürətli." width="800" height="261"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Təhlükəsizlik&lt;/strong&gt; – Kilidlənmiş &lt;code&gt;uv.lock&lt;/code&gt; faylı ilə versiyalar tam idarə olunur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sadəlik&lt;/strong&gt; – Bir neçə alət əvəzinə bircə &lt;code&gt;uv&lt;/code&gt; ilə hər şey idarə olunur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Təmiz YAML və TOML dəstəyi&lt;/strong&gt; – &lt;code&gt;pyproject.toml&lt;/code&gt; əsaslı işləyir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker və CI üçün hazır dəstək&lt;/strong&gt; – rəsmi &lt;code&gt;uv&lt;/code&gt; Docker image-ləri mövcuddur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pre-commit&lt;/code&gt; ilə inteqrasiya&lt;/strong&gt; – kilid fayllarının nəzarəti mümkündür.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Çatışmazlıqlar (hələlik):
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hələ &lt;strong&gt;nisbətən yenidir&lt;/strong&gt;, bütün layihələrdə geniş istifadə olunmur.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;conda&lt;/code&gt; və ya C-dependent paketləri idarə etməkdə məhdud ola bilər.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;poetry&lt;/code&gt; və &lt;code&gt;pipenv&lt;/code&gt; kimi bəzi xüsusiyyətlər (məsələn, paket publishing) hələ tam hazır deyil.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;uv&lt;/code&gt; necə quraşdırılır?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-Ls&lt;/span&gt; https://astral.sh/uv/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;və ya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;uv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Sadə İş Axını Misalı
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv python &lt;span class="nb"&gt;install &lt;/span&gt;3.12
uv python pin 3.12
uv add django
uv lock
uv &lt;span class="nb"&gt;sync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu əmrlərlə:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.12 yüklənir&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;django&lt;/code&gt; əlavə olunur&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uv.lock&lt;/code&gt; faylı yaranır&lt;/li&gt;
&lt;li&gt;Virtual mühitə bütün paketlər quraşdırılır&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>uv</category>
    </item>
    <item>
      <title>The display decorator</title>
      <dc:creator>Mehman Mammadov</dc:creator>
      <pubDate>Thu, 13 Jun 2024 10:26:00 +0000</pubDate>
      <link>https://dev.to/mammadov115/the-display-decorator-b7o</link>
      <guid>https://dev.to/mammadov115/the-display-decorator-b7o</guid>
      <description>&lt;p&gt;When using a callable in the list_display, as in the cases of initialled_name and isbn13, we can use the admin.display decorator to specify the column name that will appear in the header of the change list using the description argument. We can also use it to get around the limitation of calculated fields not being sortable by specifying ordering on the callable. The empty_value argument can be used to specify how a None value or empty string is displayed. The default empty_value display is a single dash character:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@admin.display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ordering&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;isbn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ISBN-13&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;empty_value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-/-&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;isbn13&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;9780316769174&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; =&amp;gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;978-0-31-676917-4&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{}-{}-{}-{}-{}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isbn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isbn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isbn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isbn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isbn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The boolean argument to admin.display can be used to flag a value to be represented in Boolean form:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@admin.display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolean&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Has ISBN&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;has_isbn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;9780316769174&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; =&amp;gt; True &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isbn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Together these display decorator settings will give us display columns that look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou2ov3sks2qm3grjjtba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou2ov3sks2qm3grjjtba.png" alt="Image description" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Web development with Django, Ben Shaw, Saurabh Badhwar, Chris Guest, Bharath Chandra K S&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>django</category>
    </item>
  </channel>
</rss>
